JdbcTemplate調儲存過程
使用spring JdbcTemplate均不用手動關閉連線
//JdbcTemplate 執行儲存過程,不含事物。
ComboPooledDataSource ds = (ComboPooledDataSource )res.get("ds"); //連線池獲取
JdbcTemplate jt = new JdbcTemplate(ds);
String param2Value = jt.execute(
new CallableStatementCreator() {
public CallableStatement createCallableStatement(Connection connection) throws SQLException {
String storedProc = "{call RL.TESTPROC(?,?,?)}";// 呼叫的sql
CallableStatement cs = connection.prepareCall(storedProc);
//cs.setString(1, "p1");// 設定輸入引數的值
cs.registerOutParameter(1, Types.INTEGER);
cs.registerOutParameter(2, Types.VARCHAR);// 註冊輸出引數的型別
cs.registerOutParameter(3, Types.VARCHAR);
return cs;
}
}, new CallableStatementCallback<String>() {
public String doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException {
cs.execute();
String t1 = cs.getString(1);
String t2 = cs.getString(2);
String t3 = cs.getString(3);
return cs.getString(2);// 獲取輸出引數的值
}
});
//JdbcTemplate 執行儲存過程包含事物,回滾
ComboPooledDataSource ds = (ComboPooledDataSource )res.get("ds"); //連線池獲取
TransactionDefinition def = new DefaultTransactionDefinition();
DataSourceTransactionManager transactionManager=new DataSourceTransactionManager(ds);
TransactionStatus status = transactionManager.getTransaction(def);
JdbcTemplate jt = new JdbcTemplate(ds);
try {
String updstr=" INSERT INTO RL.FHDK_PARM_USR "
+ " VALUES( 'TTTTS',9 ) ";
jt.update(updstr);
int param2Value = jt.execute(
new CallableStatementCreator() {
public CallableStatement createCallableStatement(Connection connection) throws SQLException {
String storedProc = "{call RL.TESTPROC(?,?,?)}";// 呼叫的sql
CallableStatement cs = connection.prepareCall(storedProc);
//cs.setString(1, "p1");// 設定輸入引數的值
cs.registerOutParameter(1, Types.INTEGER);
cs.registerOutParameter(2, Types.VARCHAR);// 註冊輸出引數的型別
cs.registerOutParameter(3, Types.VARCHAR);
return cs;
}
}, new CallableStatementCallback<Integer>() {
public Integer doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException {
cs.execute();
int t1 = cs.getInt(1);
String t2 = cs.getString(2);
String t3 = cs.getString(3);
return t1;// 獲取輸出引數的值
}
});
if(param2Value==-1){
throw new Exception("執行過程失敗!");
}
transactionManager.commit(status);
}catch(Exception e){
transactionManager.rollback(status);
System.out.println(e.getMessage());
}
相關文章
- jdbctemplate呼叫儲存過程傳遞陣列引數JDBC儲存過程陣列
- 用dbms_profiler調優儲存過程儲存過程
- MySQL儲存過程詳解 mysql 儲存過程MySql儲存過程
- 儲存過程儲存過程
- SQL 儲存過程裡呼叫另一個儲存過程SQL儲存過程
- MySQL儲存過程詳解 mysql 儲存過程linkMySql儲存過程
- Oracle儲存過程乾貨(一):儲存過程基礎Oracle儲存過程
- 儲存過程與儲存函式儲存過程儲存函式
- Oracle儲存過程Oracle儲存過程
- Mysql 儲存過程MySql儲存過程
- 使用儲存過程儲存過程
- sybase儲存過程儲存過程
- java儲存過程Java儲存過程
- 管理儲存過程儲存過程
- 呼叫儲存過程儲存過程
- 實戰儲存過程排程過程儲存過程
- 在儲存過程A中呼叫儲存過程B的結果儲存過程
- 從sybase的儲存過程轉向oracle的儲存過程儲存過程Oracle
- MySql儲存過程—2、第一個MySql儲存過程的建立MySql儲存過程
- 把自編儲存過程設定為系統儲存過程儲存過程
- 儲存過程 傳 datatable儲存過程
- 儲存過程——遊標儲存過程
- Oracle儲存過程-1Oracle儲存過程
- mysql儲存過程整理MySql儲存過程
- JAVA儲存過程(轉)Java儲存過程
- Winform呼叫儲存過程ORM儲存過程
- oracle的儲存過程Oracle儲存過程
- SER SERVER儲存過程Server儲存過程
- MySQL之儲存過程MySql儲存過程
- [MYSQL -23儲存過程]MySql儲存過程
- SQL儲存過程示例SQL儲存過程
- Oracle儲存過程例子Oracle儲存過程
- SQL Server 儲存過程SQLServer儲存過程
- 儲存過程 函式儲存過程函式
- 【SQL Server】--儲存過程SQLServer儲存過程
- 修改的儲存過程儲存過程
- Oracle建立儲存過程Oracle儲存過程
- perl呼叫儲存過程儲存過程