记两一下工作中用到的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