我正在执行以下代码:
CallableStatement cs;
cs = conn.prepareCall("{ ? = call mypackage.myfunc()}");
cs.registerOutParameter(1, OracleTypes.CURSOR);
System.out.println(cs.execute());
System.out.println(cs.getResultSet());
ResultSet rs = (ResultSet) cs.getObject(1);
System.out.println(rs);
函数声明如下:
CREATE OR REPLACE PACKAGE BODY myuser.mypackage AS
FUNCTION myfunc
return sys_refcursor
is
a_cursor sys_refcursor;
begin
open a_cursor for select * from mytable;
return a_cursor;
end myfunc;
end mypackage;
/
根据文档,如果有结果,则 cs.execute() 将返回 true 并且 cs.getResultSet() 将有一个值。但是,这是我得到的输出:
false
null
oracle.jdbc.driver.OracleResultSetImpl@b92a848
我正在使用 Oracle Express 11.2.0 和最新的驱动程序。
任何提示/解释/尝试的事情都将受到欢迎。
谢谢!