JDBC调用存储过程,进参出参

时间:2023-06-01 23:34:32

今天做了一个数据表拷贝的功能,用到了存储过程,就写了一个java中用jdbc调用存储过程的代码,成功的实现了功能,晚上跑回家记录下

 Connection conn = ConnectionUtil.getConnect();//取得数据库连接

 try {
CallableStatement cstmt = conn.prepareCall("{call prc_patch_config(?,?,?,?)}");//根据存储过程名字调用存储过程,?代表参数
/**
* 第3个、第4个?表示输出参数,所以在这里要声明输出类型
*/
cstmt.registerOutParameter(3, Types.INTEGER);//这个参数值得是数据复制成功(0)或者失败(1)的状态位。所以类型INTEGER来
cstmt.registerOutParameter(4, Types.VARCHAR);//这个参数值是存储过程报错信息
/**
* 1、2为进参,在这个程序中1代表的是批次号,2代表的 是表名
*/
cstmt.setString(1, (String) params.get("patchCode"));
cstmt.setString(2, (String) params.get("tableEnName"));
cstmt.execute();//执行存储过程
int isSuccess = cstmt.getInt(3);//取得是否成功的信息
log = cstmt.getString(4);//取得报错信息 } catch (SQLException e) {
e.printStackTrace(); }finally {
try {
conn.close();//关闭连接
} catch (SQLException e) {
e.printStackTrace();
}
}

以上就是我自己写的调用存储过程的代码,加了注释,怕自己以后看不懂