mybatis调用存储过程

本文记录了在MyBatis 3.2.2版本中如何调用Oracle 10g的存储过程,包括返回单个值和SYS_REFCURSOR类型的情况。在调用返回单个值的存储过程时,主要配置集中在MyBatis的映射文件中;而对于返回SYS_REFCURSOR的存储过程,需要将结果转换为List,并在后台代码中进行处理。

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

记两一下工作中用到的mybatis调用存储过程,这边用到的mybatis是3.2.2版本,oracle 10g。

一、返回一个值的存储过程,如下:

CREATE OR REPLACE PROCEDURE "SP_MF_I_IMP"
          ( I_MANIFEST_I_ID    IN NUMBER ,
            I_FUNCTION_CODE  IN VARCHAR2,
            I_FIRM_ID        IN NUMBER,
            I_OP_USER        IN VARCHAR2, --操作人ID
            O_RETURN_MESSAGE OUT VARCHAR2  ) AS

          --根据SEQ生成的报文头表的ID
          V_HEAD_INFO_ID NUMBER(11);
          --报文编号中,年月日时生成
          V_YYMMDDHHMM VARCHAR2(10);
          --报文编号
          V_MESSAGE_ID VARCHAR2(50);
          --申报人
          V_SEND_ID VARCHAR2(50);
          --货物运输批次号
          V_TRAN_NO VARCHAR2(13);
          --提运单号
          V_BILL_NO VARCHAR2(35);
          --异常报文
          STR_L_ERRMSG VARCHAR2(3000);
          --新增,修改,删除类型
          V_FUNTYPE VARCHAR2(5);
          --是否已经申报的标识
          V_DECLARE VARCHAR(5);
          
          BEGIN 
          
            --当要申报的单的状态为‘001’新单,‘008’发送海关失败时才需要发送
            IF V_DECLARE = '001' OR V_DECLARE = '008' THEN
                --获得SEQ_EDI_HEAD_INFO的值
                SELECT EDI.SEQ_EDI_HEAD_INFO.NEXTVAL INTO V_HEAD_INFO_ID FROM DUAL;
                --组装生成报文编号中的'YYMMDDHHMM'
                SELECT TO_CHAR(SYSDATE,'YYMMDDHH24MI') INTO V_YYMMDDHHMM FROM DUAL;
                --生成报文编号
                V_MESSAGE_ID := '78921227X'|| V_YYMMDDHHMM || I_MANIFEST_I_ID;

                --通过GET_SEND_ID函数获取SENDID
                V_SEND_ID := GET_SEND_ID(I_FIRM_ID);

                --新增报文头表信息
                INSERT INTO EDI.EDI_MANIFEST_I_HEAD_INFO
                  (ID,M
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值