Ho problemi a chiamare Oracle FUNCTION (non una stored procedure) da Java 1.6, utilizzando ojdbc14.jar.Chiama una funzione Oracle da Java
Non so quale sia la funzione contiene come mi chiamo da un server remoto, tutto quello che so è questo:
FUNCTION ap_ch_get_acct_balances (VAR_PI_MOB_NO_ACCT_NO VARCHAR2,
VAR_REPLY_CODE OUT NUMBER, VAR_EXT_RESPONSE OUT VARCHAR2, VAR_PO_ACC_BAL OUT CHAR,
VAR_PO_ACCT_NO OUT CHAR)
Lo schema che ho bisogno di usare è: FCRLIVE.AP_CH_GET_ACCT_BALANCES
sto cercando in questo modo:
String call = "{ ? = call FCRLIVE.AP_CH_GET_ACCT_BALANCES(?, ?, ?, ?, ?) }";
CallableStatement cstmt = conn.prepareCall(call);
cstmt.setQueryTimeout(1800);
cstmt.setString(1, inputCode);
cstmt.registerOutParameter(2, oracle.jdbc.OracleTypes.NUMBER);
cstmt.registerOutParameter(3, oracle.jdbc.OracleTypes.VARCHAR);
cstmt.registerOutParameter(4, oracle.jdbc.OracleTypes.CHAR);
cstmt.registerOutParameter(5, oracle.jdbc.OracleTypes.CHAR);
cstmt.executeUpdate();
Ma io continuo a vedere questo nel file di registro:
java.sql.SQLException: ORA-01006: bind variable does not exist
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:573)
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1891)
at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:1093)
at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2047)
at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:1940)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2688)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:589)
Sto chiamando la funzione errata? O cosa potrebbe essere?
Grazie in anticipo per l'aiuto!
quale tipo di ritorno di "ap_ch_get_acct_balances'? – user1516873
Restituisce 4 parametri. 3 numeri interi e 1 stringa – lulu88
La tua funzione dovrebbe restituire qualcosa. 'FUNZIONE ap_ch_get_acct_balances (definizione dei parametri in entrata e in uscita ...) restituisce NUMBER' per esempio. Quindi, quale funzione restituisce la funzione? – user1516873