JAVA程序调用MYSQL带有OUTPUT参数的存储过程实现思路
(1) 给存储过程参数列表中定义带OUTPUT 输出参数 ,关键字(参数名称 ,数据类型,OUTPUT)
例如 :
ps_isa_ywxx_insert(IN ps_ywbh VARCHAR(10) CHARACTER SET UTF8, IN ps_ywmc VARCHAR(20) CHARACTER SET UTF8, IN ps_ywbz VARCHAR(30) CHARACTER SET UTF8, OUT exceResult INT) ;
(2)在存储过程中给OUTPUT参数赋值,包含两部分内容,一部分是给参数赋默认值(出现异常要返回的值),另一部分是给参数赋存储过程正常执行完毕时要返回的值
例如:
SET exceResult =0; ----默认值
------其他数据库操作-----------
INSERT INTO isa_ywxx (ywbh, ywmc, ywbz) VALUES (ps_ywbh, ps_ywmc, ps_ywbz);
COMMIT;
SET exceResult = 1; --- 存储过程正常执行完毕时要返回的值
(3)JAVA程序调用存储过程使用对象:
需要使用 CallableStatement 对象去执行存储过程,而不是 PreparedStatement,执行存储过程语句必须写在注册OUTPUT参数之后;
执行存储过程方法:
CS.execute() ;
(4)存储过程参数列表中的参数应该使用 “?”占位符方式编写,并使用CS (CallableStatement类型对象)的setXXX方法来给参数赋值,遇到OUTPUT参数时应该使用 CS的registerOutParameter方法来注册OUTPUT返回值参数,registerOutParameter有两个参数(参数索引位置和参数类型,参数类型 java.sql.Types中某一类型)
例如 :
CS.registerOutParameter(4, Types.INTEGER) ;
(5)接收存储过程OUTPUT参数值(返回值),接收OUTPUT参数值使用CS的getXXX方法
例如:
ps.getInt(4);
(6) 根据接收到的OUTPUT参数值,做判断执行其他操作
实现源码 :
MYSQL 存储过程 代码
CREATE PROCEDURE ps_isa_ywxx_insert(IN ps_ywbh VARCHAR(10) CHARACTER SET UTF8, IN ps_ywmc VARCHAR(20) CHARACTER SET UTF8, IN ps_ywbz VARCHAR(30) CHARACTER SET UTF8, OUT exceResult INT)
COMMENT '新增新业务记录对象'
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK;
SET exceResult =0;
START TRANSACTION;
INSERT INTO isa_ywxx (ywbh, ywmc, ywbz) VALUES (ps_ywbh, ps_ywmc, ps_ywbz);
COMMIT;
SET exceResult = 1;
END
JAVA 程序代码 :
public boolean createBussinKinds(String ywbh, String ywmc, String ywbz) {
Connection con = null;
CallableStatement ps = null;
int insertResult = 0;
try {
con = JdbcUtil.getInstance().getConnection();
con.setAutoCommit(false);
ps = con.prepareCall(" call ps_isa_ywxx_insert(?,?,?,?) ; ");
ps.setString(1, ywbh);
ps.setString(2, ywmc);
ps.setString(3, ywbz);
ps.registerOutParameter(4, Types.INTEGER) ;
ps.execute() ;
insertResult = ps.getInt(4);
System.out.println("BBBBBBBBBBBBBBBBBBBB"+insertResult);
if (insertResult > 0) {
log.info("执行添加操作 操作数据库成功!");
return true;
}
} catch (SQLException e) {
log.error(e.getMessage());
} finally {
JdbcUtil.close(null, ps, con);
}
return false;
}
备注:JdbcUtil 连接MYSQL数据公共类 其中 PreparedStatement 和 CallableStatement ,Types 均来至于java.sql包

本文介绍如何使用JAVA程序调用MYSQL存储过程并处理带有OUTPUT参数的情况,包括存储过程定义、异常处理、JAVA代码实现等关键步骤。
1240

被折叠的 条评论
为什么被折叠?



