Tôi đang gặp sự cố khi gọi hàm FUNCTION của Oracle (không phải là Thủ tục được lưu trữ) từ Java 1.6, sử dụng ojdbc14.jar.Gọi hàm Oracle từ Java
Tôi không biết những gì hàm chứa như tôi gọi nó từ một máy chủ từ xa, tất cả tôi biết là thế này:
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)
Giản đồ tôi cần phải sử dụng là: FCRLIVE.AP_CH_GET_ACCT_BALANCES
tôi đang cố gắng này:
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();
Nhưng tôi cứ nhìn thấy điều này trong file log:
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)
Tôi có gọi chức năng sai không? Hoặc điều này có thể là gì?
Cảm ơn bạn đã trợ giúp!
loại trả về của 'ap_ch_get_acct_balances' là gì? – user1516873
Nó trả về 4 tham số. 3 số nguyên và 1 chuỗi – lulu88
Chức năng của bạn sẽ trả về một cái gì đó. 'FUNCTION ap_ch_get_acct_balances (định nghĩa tham số vào và ra ...) trả về NUMBER' chẳng hạn. Vì vậy, những gì chức năng của bạn trở lại loại? – user1516873