我有点卡在这里。我在Oracle中有一个小笨函数,并尝试用Java访问它。返回值应该是一个SYS_REFCURSOR。但是如果我尝试用Java调用它,我会得到一个错误。访问Oracle SYS_REFCURSOR
这是Oracle功能:
FUNCTION GET_TBL_AS_CUR
RETURN SYS_REFCURSOR
IS
Tbl SYS_REFCURSOR;
BEGIN
OPEN Tbl FOR SELECT * FROM test_tbl;
RETURN Tbl;
END;
这是Java中的呼叫:
String stmt = "callStmt: {?= call dbschema.pkg_tbl_tools.get_tbl_as_cur()}";
callableStatement = conn.prepareCall(stmt);
callableStatement.registerOutParameter(1, OracleTypes.CURSOR);
System.out.println("Executing... " + stmt + "\n");
callableStatement.execute();
rs = ((OracleCallableStatement)callableStatement).getCursor(1);
} catch (Exception e) {
System.out.println(e.getMessage());
}
的错误信息是:
Unknown SQL-Type: sqlKind = UNINITIALIZED
我在做什么错?
你在哪一行得到错误信息?它是最后一行,你调用'getCursor'? – rgettman
'getCursor'调用后没有任何反应。只是“catch(Exception)”。显示的错误消息将打印在那里。 – Ben
PL/SQL函数在Oracle中工作吗?在Java代码中,您是否尝试过'getObject(1)'并将所返回的内容转换为“ResultSet”? – rgettman