我想了解如何調用一個以SYS_REFCURSOR
作爲IN
參數的PL/SQL過程。用SYS_REFCURSOR作爲IN參數調用PL/SQL過程使用JDBC
考慮下面的PL/SQL程序:
print_cursor_contents(myCursor SYS_REFCURSOR , row_count OUT NUMBER);
在結合價值做我使用的方法setXXX
IN參數的時間?
給我一個帶有單獨遊標記錄字段的java類,因爲它的成員和這個類的一個實例數組似乎是表示一個plsql CURSOR的正確方法。我得到的SQLException當我這樣做:
我用下面的設置方法
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而不將數據保存到數據庫的解決方案:https://stackoverflow.com/questions/45865207/create-and-pass-sys-refcursor-as-an-input-parameter-to -oracle-procedure-from-jav/45881113#45881113 – 2017-08-28 10:03:16