当我在SqlDeveloper中执行sql query SELECT * FROM TABLE (TEST.getDevices())
时,我有大约200行,但是当我尝试在java中执行它时:
//cut here
String query = "SELECT * FROM TABLE (TEST.getDevices())";
PreparedStatement stmt = null;
ResultSet rset = null;
try {
stmt = oracleConnection.prepareStatement(query);
rset = stmt.executeQuery();
rset.next();
System.out.println(rset.getInt(1));
//cut here
我得到空ResultSet等等抛出异常。
我尝试过查询SELECT Count(*) a FROM TABLE (TEST.getDevices())
在SqlDeveloper中,结果为200,在java app中为0。
在ma app中获取空ResultSet的原因是什么?
答案 0 :(得分:0)
您是否检查了数据库连接。
答案 1 :(得分:0)
我假设,TEST.getDevices()返回TYPE“TABLE OF”或getDevices是PIPELINED FUNCTION?如果是,你可以尝试这个技巧:
CREATE VIEW VIEW_DEVICES AS SELECT * FROM TABLE(TEST.getDevices());
比起Java和SQLDeveloper的工作:
DESC VIEW_DEVICES;
或选择陈述
SELECT * FROM VIEW_DEVICES;
您可以将查询替换为:
String query = "SELECT * FROM VIEW_DEVICES";
或者你可以尝试在google中搜索“如何在oracle中映射java中的varray”。