jdbc调用存储过程

jdbc调用存储过程

自己用到的一个方法,贴上来便于记忆

 1      protected    void  execBatch(String procDate)  throws  HsException {
 2        CallableStatement cstmt=null;
 3        String onlineDay=getSysParam("OCRM_ONLINE_DATE"); //系统上线日期
 4        if(procDate.compareTo(onlineDay)<0){
 5            throw new HsException("00001","批处理日期应该大于系统上线日期!");
 6        }

 7        try{
 8            String procName=getProcName();
 9            if(procDate.compareTo(getSysParam("OCRM_BATCH_DATE"))<=0) procName=procName.trim()+"_REDO";  //重跑批处理名称
10            cstmt=dataSource.getConnection().prepareCall("{ call "+procName+" (?,?,?) }");
11            cstmt.registerOutParameter(2, java.sql.Types.INTEGER);
12            cstmt.registerOutParameter(3, java.sql.Types.VARCHAR);
13            cstmt.setString(1,HsDate.dateTo8(procDate));
14            Progress p=Progress.newInstance();
15            p.start();
16            cstmt.execute();
17            p.setOff(true);  //退出
18            int ret=cstmt.getInt(2);
19            String reinfo=cstmt.getString(3);
20            if(ret!=0){
21                throw new HsException("00001","批处理执行失败!,"+reinfo);
22            }

23//            cstmt.close();
24        }
catch(Exception e){
25            throw new HsException(HsErrorMsg.ERR_DB_ERROR,e.toString());
26        }

27    }
    
这个函数一直到批处理结束后才会返回,因而执行时要放在线程里面。

你可能感兴趣的:(jdbc调用存储过程)