JAVA程序调用MYSQL带有OUTPUT参数的存储过程
来源:互联网 发布:centos debian 比较 编辑:程序博客网 时间:2024/06/06 10:53
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程序调用MYSQL带有OUTPUT参数的存储过程
- 用exec调用带有output输出参数的存储过程
- 用exec调用带有output输出参数的存储过程
- MyBatis调用带有返回结果、output参数的存储过程上与ibatis的区别
- ADO调用带有参数的存储过程
- mysql 带有无参数的存储过程
- Oracle 存储过程 调用带有 out 参数的存储过程
- oracle :带有out参数的存储过程的调用方法
- oracle在job中调用带有参数的存储过程
- asp.net 调用带有输出参数的存储过程
- C#调用带有参数的SQL存储过程
- Oracle中调用带有返回参数的存储过程
- C# 调用带有输出参数的分页存储过程
- C# 调用带有输出参数的分页存储过程
- 存储过程OUTPUT参数调用实例
- 存储过程OUTPUT参数调用实例
- 带有参数的存储过程
- android 自定义控件
- ALSA 中asound.conf 验证送入播放设备中的数据内容
- 用mysql的存储过程实现生成唯一订单号
- Objective-C中的block代码块介绍
- 【LeetCode从零单排】No100 Same Tree && No101 Symmetric Tree
- JAVA程序调用MYSQL带有OUTPUT参数的存储过程
- 图像处理-平滑和锐化
- ON_COMMAND ON_MESSAGE ON_NOTIFY区别与联系
- 实现服务器端的多线程SOCKET Server C++/VC
- Oracle Solaris系统管理指南:13本秘籍
- iOS App性能优化
- Integer与int的区别
- ios size class
- ssh整合思路详解