【发布时间】:2015-01-19 00:04:50
【问题描述】:
我试图了解如何调用将SYS_REFCURSOR 作为IN 参数的PL/SQL 过程。
考虑以下 PL/SQL 过程:
print_cursor_contents(myCursor SYS_REFCURSOR , row_count OUT NUMBER);
在将值绑定到 IN 参数时,我使用哪个setXXX 方法?
对我来说,一个带有单独游标记录字段的 java 类,因为它的成员和这个类的实例数组似乎是表示 plsql CURSOR 的正确方法。执行此操作时出现 SQLException:
我用了下面的set方法
callStmt.setObject(1, curRec);
这是我使用上述语句得到的例外:
Exception occured in the database
Exception message: Invalid column type
java.sql.SQLException: Invalid column type
at oracle.jdbc.driver.OraclePreparedStatement.setObjectCritical(OraclePreparedStatement.java:8921)
at oracle.jdbc.driver.OraclePreparedStatement.setObjectInternal(OraclePreparedStatement.java:8396)
at oracle.jdbc.driver.OraclePreparedStatement.setObjectInternal(OraclePreparedStatement.java:9176)
at oracle.jdbc.driver.OracleCallableStatement.setObject(OracleCallableStatement.java:5024)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.setObject(OraclePreparedStatementWrapper.java:234)
at com.rolta.HrManager.printMaxSalAllDept(HrManager.java:1022)
at com.rolta.HrManager.main(HrManager.java:1116)
Database error code: 17004
【问题讨论】:
-
这里是直接从Java传递SYS_REFCURSOR而不将数据保存到数据库的解决方案:stackoverflow.com/questions/45865207/…
标签: java jdbc parameters plsql cursor