java执行存储过程代码 带返回参数

本文介绍了在Java中如何执行存储过程并获取其返回值。通过使用CallableStatement和HibernateSession,设置存储过程参数,注册输出参数,执行过程,并获取返回的状态和信息。当返回状态为'0'时,表示成功;否则,记录执行失败及异常信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java中执行存储过程时,有时需要将存储过程的返回值获取到,并进行一些操作;

一、涉及的Jar包如下:

import java.sql.CallableStatement;

import org.hibernate.Session;
二、主要实现逻辑如下:

        Session session = null;

        CallableStatement callableStatement=null;

        try {

            String p_group_pf_sec = "call "+wf_id+"(?,?,?,?,?)"; //?是占位符包括参数和返回值

            session=HibernateUtil.getSession(“获取session”);

            callableStatement= session.connection().prepareCall(p_group_pf_sec);

            callableStatement.setString(1, param1); //存储过程参数

            callableStatement.setString(2, param2); //存储过程参数

            callableStatement.setString(3, param3); //存储过程参数

            callableStatement.registerOutParameter(4, Types.INTEGER);  //存储过程返回状态

            callableStatement.registerOutParameter(5, Types.VARCHAR); //存储过程返回信息

            callableStatement.execute();//执行存储过程

            log.append(" 执行完毕!");

            //存储过程执行状态

            String state = callableStatement.getString(4); //获取返回状态

            //存储过程错误信息

            String message = callableStatement.getString(5); //获取返回信息

            if("0".equals(state)){ //0 成功 1失败

                isSuccess.put("result", true);    

            }else{

                isSuccess.put("result", false);    

                log.append(" 执行失败! 存储过程内部异常,原因:"+message);                

            }

                    

        } catch (Throwable e) {

            isSuccess.put("result", false);

            String error=e.getLocalizedMessage();

            log.append(" 执行失败! 执行存储过程异常,原因:"+error);

        }finally{

//关闭连接,关闭session

            if(callableStatement!= null){

                try {

                    callableStatement.close();

                } catch (SQLException e) {

                    logger.error(e.getMessage());

                }

            }

            if(session != null && session.isConnected()){

                session.close();

            }

        }

转载请标明出处:https://mp.youkuaiyun.com/postedit/85209214

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值