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

questionAnswers(1)

yourAnswerToTheQuestion