I am trying to call a stored procedure in oracle that has a SYS_REFCURSOR as IN OUT at the same time. But I am getting the following error:
Stored procedure
PROCEDURE TRADSS_DEVOLUCION(pi_id_transaccion in number,
pio_cur_traducido IN OUT SYS_REFCURSOR) IS
ve_err_msg VARCHAR2(2000);
BEGIN
.
.
.
Repository
try (CallableStatement callableStatement =
connection.prepareCall("call OPERATOR.PKG_TRANSLATE.TRADSS_EVOLUTION(?,?)")){
callableStatement.setString(1, idTrx);
callableStatement.registerOutParameter(2, OracleTypes.CURSOR);
List<Data> listData = new ArrayList<>();
ResultSet rst = (ResultSet) callableStatement.getObject(2); // here throw the exception
while (rst.next()) {
.
.
.
}
response.setLista(listData);
}catch (Exception ex){
ex.printStackTrace();
log.error("Error in service: {}", ex.getMessage());
}
return response;
Exception
java.sql.SQLException: Invalid column index
at oracle.jdbc.driver.OracleCallableStatement.getObject(OracleCallableStatement.java:1745)
at oracle.jdbc.driver.OracleCallableStatementWrapper.getObject(OracleCallableStatementWrapper.java:639)
at org.davidmoten.rx.jdbc.pool.internal.ConnectionNonBlockingMemberCallableStatement.getObject(ConnectionNonBlockingMemberCallableStatement.java:299)
at pe.com.claro.maverick.service.support.sga.repository.impl.SgaRepositoryImpl.findTranslate(SgaRepositoryImpl.java:72)