执行PreparedStatement后清空ResultSet

时间:2010-08-26 08:06:03

标签: java sql oracle

当我在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的原因是什么?

2 个答案:

答案 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”。