EAS调用存储
CallableStatement proc = null; String cp = "01.02"; fileLogger.log("===========cp="+cp); ResultSet rs2 =null; // 准备调用存储过程 proc = this.getConnection(ctx).prepareCall("{ call proc_query_bzj(?,?,?)}"); // 设置输入参数 proc.setString(1, cp); // 设置第一个输入参数 proc.setString(2, "202502"); // 设置第二个输入参数 // 注册OUT参数为REF CURSOR proc.registerOutParameter(3, OracleTypes.CURSOR); // 执行存储过程 proc.execute();// 执行 // 获取OUT参数的结果集 ResultSet rs = (ResultSet) proc.getObject(3); //处理结果集 while(rs.next()){ String COMPANYNO = rs.getString("COMPANYNO"); String ASSACCOUNTNUMBER = rs.getString("ASSACCOUNTNUMBER"); BigDecimal DIFFENDINGBALANCE = rs.getBigDecimal("DIFFENDINGBALANCE"); }
在EAS中调用存储过程如上,
1、第一个和第二个问号表示入参,最后一个表示出参
2、OracleTypes是oracle.jdbc包里的
3、proc_query_bzj 是存储的名称
给出的存储过程sql如下
create or replace procedure proc_query_bzj( v_companyNo varchar2, --定义入参公司编码 v_periodNumber varchar2, --定义入参期间编码 param_resultSet OUT SYS_REFCURSOR --定义出参返回结果集 ) as begin open param_resultSet FOR SELECT RAB.RAB_COM_FNAME AS COMPANY, RAB.RAB_COM_FNUMBER AS COMPANYNO, RAB.RAB_ASSBANK_FNUMBER AS ASSACCOUNTNUMBER, RAB.RAB_ASSBANK_FNAME AS ASSACCOUNTNAME, TO_NUMBER(NEXT_PERIOD.FNUMBER) AS PERIODFNUMBER, SUM(ROUND(NVL(ORG_TABLE.ASSENDINGBALANCE, 0), 2)) AS ASSINITIALBALANCE, 0 AS ASSCURPERIODADDAMOUNT, 0 AS ASSCURPERIODRETURNAMOUNT, 0 AS ASSINTERESTAMOUNT, SUM(ROUND(NVL(ORG_TABLE.ASSENDINGBALANCE, 0), 2)) AS ASSENDINGBALANCE, RAB.RAB_AV_FNUMBER AS GLACCOUNTANT, RAB.RAB_GLBANK_FNAME AS GLACCOUNTNUMBER, 0 AS GLINITIALBALANCE, 0 AS GLCURPERIODADDAMOUNT, 0 AS GLCURPERIODRETURNAMOUNT, 0 AS GLINTERESTAMOUNT, 0 AS GLENDINGBALANCE, 0 AS DIFFINITIALBALANCE, 0 AS DIFFADDAMOUNT, 0 AS DIFFSUBAMOUNT, 0 AS DIFFINTERESTAMOUNT, 0 AS DIFFENDINGBALANCE FROM CT_NT_ASSURECHECK ORG_TABLE LEFT JOIN T_ORG_BASEUNIT COM ON ORG_TABLE.COMPANYNO = COM.FNUMBER LEFT JOIN (SELECT FNUMBER, FBEGINDATE FROM T_BD_PERIOD GROUP BY FNUMBER, FBEGINDATE) NOW_PERIOD ON ORG_TABLE.PERIODFNUMBER = NOW_PERIOD.FNUMBER LEFT JOIN (SELECT FNUMBER, FBEGINDATE FROM T_BD_PERIOD GROUP BY FNUMBER, FBEGINDATE) NEXT_PERIOD ON ADD_MONTHS(NOW_PERIOD.FBEGINDATE, 1) = NEXT_PERIOD.FBEGINDATE INNER JOIN VIEW_ACCOUNT_RAB RAB ON ORG_TABLE.COMPANYNO = RAB.RAB_COM_FNUMBER AND ORG_TABLE.ASSACCOUNTNUMBER = RAB.RAB_ASSBANK_FNUMBER AND ORG_TABLE.GLACCOUNTANT = RAB.RAB_AV_FNUMBER AND ORG_TABLE.GLACCOUNTNUMBER = RAB.RAB_GLBANK_FNAME WHERE COM.FNUMBER=v_companyNo AND NEXT_PERIOD.FNUMBER =v_periodNumber GROUP BY RAB.RAB_COM_FNAME, RAB.RAB_COM_FNUMBER, RAB.RAB_ASSBANK_FNUMBER, RAB.RAB_ASSBANK_FNAME, NEXT_PERIOD.FNUMBER, RAB.RAB_AV_FNUMBER; end proc_query_bzj;
linux下的docker操作命令及异常

浙公网安备 33010602011771号