JdbcTemplate执行带输入参数和输出参数的存储过程
时间:2021-07-01 10:21:17
帮助过:4人阅读
*
* 执行返回一个输出参数,若干输入参数的存储过程
* 方法第一个参数为存储过程名称,第二个参数为存放输入参数的数组(按顺序存放),方法返回值为存储过程输出参数
*/
public String execProcedureWithOutParam(final String procName,final String
[] inParams){
String returnVal=(String)getJdbcTemplate().
execute(new CallableStatementCreator() {
public CallableStatement createCallableStatement(Connection con)
throws SQLException {
int procArgNum
=inParams.length
+1;
String storedProc="{call "
+procName
+"(";
for (
int i
= 0; i
< procArgNum; i
++) {
if(i
!=procArgNum
-1){
storedProc+="?,";
}else {
storedProc+="?";
}
}
storedProc+=")}";
CallableStatement cs=con.prepareCall(storedProc);
for (
int i
= 1; i
<=inParams.length; i
++) {
cs.setString(i, inParams[i-1]);
}
cs.registerOutParameter(inParams.length+1, java.sql.Types.
VARCHAR);
return cs;
}
},new CallableStatementCallback() {
public Object doInCallableStatement(CallableStatement cs)
throws SQLException, DataAccessException {
cs.execute();
return cs.getString(inParams.length
+1);
}
});
return returnVal;
}
JdbcTemplate执行带输入参数和输出参数的存储过程
标签: