public class callPRocedure { private JdbcTemplate jdbcTemplate; public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } public void test(){ this.jdbcTemplate.execute("{call procedureName (?)}"); } } 二、調用有返回值的存儲過程(不是結果集)public class test { /** * 調用無參的存儲過程(有返回值) * @return */ public static int callProcedure() { String str = (String)jdbcTemplate.execute(new CallableStatementCreator(){ @Override public CallableStatement createCallableStatement(Connection connection) { String procedure = "{call PRC_BJ_SYNC_CIRCUIT_DATA_INCRE (?)}";//存儲過程 CallableStatement cs = null;//創建存儲過程的對象 try { cs = connection.prepareCall(procedure); cs.registerOutParameter(1,OracleTypes.VARCHAR);//注冊輸出參數的類型 } catch (Exception e) { logger.error("call procedure error : " + e); } return cs; } }, new CallableStatementCallback(){ @Override public Object doInCallableStatement(CallableStatement cs) { String CSStr = null; try { cs.execute(); csStr = cs.getString(1);//獲取輸出參數的值 } catch (Exception e) { logger.error("call procedure error : " + e); } return csStr;//獲取輸出參數的值 }}); return Integer.parseInt(str); } /** * 調用有參的存儲過程(有返回值) * @return */ public static int callProcedure() { String str = (String)jdbcTemplate.execute(new CallableStatementCreator(){ @Override public CallableStatement createCallableStatement(Connection connection) { String procedure = "{call PRC_BJ_SYNC_CIRCUIT_DATA_INCRE (?,?)}";//存儲過程 CallableStatement cs = null;//創建存儲過程的對象 try { cs = connection.prepareCall(procedure); cs.setString(1,"value1");//設置入參的值 cs.registerOutParameter(1,OracleTypes.VARCHAR);//注冊輸出參數的類型 } catch (Exception e) { logger.error("call procedure error : " + e); } return cs; } }, new CallableStatementCallback(){ @Override public Object doInCallableStatement(CallableStatement cs) { String csStr = null; try { cs.execute(); csStr = cs.getString(2);//獲取輸出參數的值 } catch (Exception e) { logger.error("call procedure error : " + e); } return csStr;//獲取輸出參數的值 }}); return Integer.parseInt(str); }}三、調用有返回值的存儲過程(是結果集)public class test { List resultList = (List) jdbcTemplate.execute( new CallableStatementCreator() { public CallableStatement createCallableStatement(Connection con) throws SQLException { String storedProc = "{call PRC_BJ_SYNC_CUST_DATA(?,?)}";// 調用的sql CallableStatement cs = con.prepareCall(storedProc); cs.setString(1, "p1");// 設置輸入參數的值 cs.registerOutParameter(2, OracleTypes.CURSOR);// 注冊輸出參數的類型 return cs; } }, new CallableStatementCallback() { public Object doInCallableStatement(CallableStatement cs) throws SQLException,DataaccessException { List resultsMap = new ArrayList(); cs.execute(); ResultSet rs = (ResultSet) cs.getObject(2);// 獲取游標一行的值 while (rs.next()) {// 轉換每行的返回值到Map中 Map rowMap = new HashMap(); rowMap.put("id", rs.getString("id")); rowMap.put("name", rs.getString("name")); resultsMap.add(rowMap); } rs.close(); return resultsMap; } }); for (int i = 0; i < resultList.size(); i++) { Map rowMap = (Map) resultList.get(i); String id = rowMap.get("id").toString(); String name = rowMap.get("name").toString(); System.out.println("id=" + id + ";name=" + name); }}
新聞熱點
疑難解答