有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java获取存储过程响应

如何在java中获得存储过程响应? 当我在SQL中运行它时,我会得到一个响应

DECLARE
result NUMBER;
begin

  result := apps.xx01_cpc_ap_pkg.xx01_create_invoice_f(8309, 4795, 146.00);
  dbms_output.put_line(result);
end;

这是我的java代码 我尝试了很多选择,但在如何获取响应方面一直失败 在这部分resultSet.getInt(4))

CallableStatement stmt = null;
String spCallRequest = "{? = call apps.xx01_cpc_ap_pkg.xx01_create_invoice_f(?, ?, ?  )}";
stmt = oraAppUtils.connection.prepareCall(spCallRequest);
stmt.setString(1,paymentRequest.healthFacilityCode);
stmt.setString(2,paymentRequest.batchId);               
stmt.setDouble(3,Double.parseDouble(paymentRequest.tariffAmount));
stmt.registerOutParameter(4, java.sql.Types.INTEGER);
resultSet = stmt.executeQuery();
System.out.println ("invoice id ="+resultSet.getInt(4));

共 (1) 个答案

  1. # 1 楼答案

    好的-只是为了文档,以防其他人需要它。。。这是SP,它有一个功能

    CREATE OR REPLACE PACKAGE APPS.XX01_CPC_AP_PKG
    AS
    
    PROCEDURE XX01_CREATE_INVOICE (P_HF_CODE IN VARCHAR2,
                                   P_BATCH_ID IN VARCHAR2,
                                   P_AMOUNT IN NUMBER,
                                   x_invoice_id OUT NUMBER/*,
                                   x_error_code OUT VARCHAR2,
                                   x_error_msg  OUT VARCHAR2,
                                   x_err_comments OUT VARCHAR2,
                                   x_code OUT NUMBER,
                                   x_source OUT VARCHAR2*/);
    
    FUNCTION XX01_CREATE_INVOICE_F (P_HF_CODE IN VARCHAR2,
                                   P_BATCH_ID IN VARCHAR2,
                                   P_AMOUNT IN NUMBER) RETURN NUMBER;
    

    所以最初我调用了这个函数——它不起作用——我把代码改成下面的代码,它就起作用了

    String spCallRequest = "BEGIN  apps.xx01_cpc_ap_pkg.xx01_create_invoice(?, ?, ?,? ); END ; ";
    stmt = oraAppUtils.connection.prepareCall(spCallRequest);
    stmt.setString(1,paymentRequest.healthFacilityCode);
    stmt.setString(2,paymentRequest.batchId);
    stmt.setDouble(3,Double.parseDouble(paymentRequest.tariffAmount));
    stmt.registerOutParameter(4, java.sql.Types.INTEGER);
    stmt.execute();
    System.out.println ("invoice id ="+stmt.getInt(4));