Chamando o procedimento PL / SQL com SYS_REFCURSOR como parâmetro IN usando JDBC
Estou tentando entender como posso chamar um procedimento PL / SQL que leva umSYS_REFCURSOR
ComoIN
parâmetro.
Considere o seguinte procedimento PL / SQL:
print_cursor_contents(myCursor SYS_REFCURSOR , row_count OUT NUMBER);
No momento do valor de ligação ao parâmetro IN, quesetXXX
método que eu uso?
Para mim, uma classe java com campos de registro de cursor individuais, como membros e uma matriz de instâncias dessa classe, parece a maneira correta de representar um CURSOR plsql. Eu recebo uma SQLException quando faço isso:
Eu usei o seguinte método set
callStmt.setObject(1, curRec);
Aqui está a exceção que recebi ao usar a instrução acima:
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