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());
}
相關文章
- Oracle儲存過程乾貨(一):儲存過程基礎Oracle儲存過程
- SQL 儲存過程裡呼叫另一個儲存過程SQL儲存過程
- 儲存過程與儲存函式儲存過程儲存函式
- unidac儲存過程儲存過程
- firedac儲存過程儲存過程
- 呼叫儲存過程儲存過程
- mysql 儲存過程MySql儲存過程
- SQLSERVER儲存過程SQLServer儲存過程
- Oracle儲存過程Oracle儲存過程
- MySQL---------儲存過程MySql儲存過程
- 造數儲存過程儲存過程
- linux呼叫儲存過程Linux儲存過程
- Oracle儲存過程-1Oracle儲存過程
- 儲存過程——遊標儲存過程
- Winform呼叫儲存過程ORM儲存過程
- 儲存過程 傳 datatable儲存過程
- mysql儲存過程整理MySql儲存過程
- JAVA儲存過程(轉)Java儲存過程
- MySQL之儲存過程MySql儲存過程
- oracle的儲存過程Oracle儲存過程
- Sql儲存過程分頁--臨時表儲存SQL儲存過程
- mybatis儲存過程返回listMyBatis儲存過程
- 資料庫儲存過程資料庫儲存過程
- mysql如何呼叫儲存過程MySql儲存過程
- Mysql 儲存過程的使用MySql儲存過程
- SQL 分頁儲存過程SQL儲存過程
- 原創:oracle 儲存過程Oracle儲存過程
- jsp中呼叫儲存過程JS儲存過程
- mongo 儲存過程詳解Go儲存過程
- Sqlserver中的儲存過程SQLServer儲存過程
- mysql和orcale的儲存過程和儲存函式MySql儲存過程儲存函式
- mssql 儲存過程呼叫另一個儲存過程中的結果的方法分享SQL儲存過程
- Sqlsugar呼叫Oracle的儲存過程SqlSugarOracle儲存過程
- SQL server儲存過程函式SQLServer儲存過程函式
- 儲存過程不好在哪裡?儲存過程
- openGauss 支援儲存過程除錯儲存過程除錯
- mySql 儲存過程與函式MySql儲存過程函式
- plsqlDevloper 儲存過程的除錯SQLdev儲存過程除錯