mybatis 调用存在过程

mybatis 调用存在过程{ call proc_saveamt_grant(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) }

Serivice
SAICDao.insertTsaveamt(tsaveamt);

根据mybatis 的 配置。返回的值自动保存在tsaveamt
DAO
void insertTemploydcmSQ(Tmember tmember)throws SQLException;




引用
<select id="insertTsaveamt" parameterType="cn.com.mmm.customer.domain.Tsaveamt" statementType="CALLABLE"  >
{call  proc_saveamt_grant(#{memb_no},#{proc_gb},#{proc_yn},#{order_no},#{order_g_seq},#{order_d_seq},#{order_w_seq},#{saveamt_gb},#{saveamt_gb}
,#{saveamt},#{save_note},#{expire_date,jdbcType=TIMESTAMP},#{proc_id},#{c_code},'',#{rtnCode,mode=OUT,jdbcType=VARCHAR},#{rtnNo,mode=OUT,jdbcType=INTEGER},#{rtnMsg,mode=OUT,jdbcType=VARCHAR})}
</select>



引用
CREATE OR REPLACE PROCEDURE MMM.PROC_SAVEAMT_GRANT(
V_MMM_CUST_NO IN TSAVEAMT_MMM.MEMB_NO%TYPE
, V_MMM_PROC_GB_MMM IN TSAVEAMT_MMM.PROC_GB%TYPE
, V_MMM_PROC_YN IN TSAVEAMT_MMM.PROC_YN%TYPE
, V_MMM_ORDER_NO IN TSAVEAMT_MMM.ORDER_NO%TYPE
, V_MMM_ORDER_G_MMM_SEQ IN TSAVEAMT_MMM.ORDER_G_MMM_SEQ%TYPE
, V_MMM_ORDER_D_MMM_SEQ IN TSAVEAMT_MMM.ORDER_D_MMM_SEQ%TYPE
, V_MMM_ORDER_W_MMM_SEQ IN TSAVEAMT_MMM.ORDER_W_MMM_SEQ%TYPE
, V_MMM_SAVEAMT_GB IN TSAVEAMT_MMM.SAVEAMT_GB%TYPE
, V_MMM_SAVEAMT_CODE IN TSAVEAMT_MMM.SAVEAMT_CODE%TYPE
, V_MMM_SAVEAMT  IN TSAVEAMT_MMM.SAVEAMT%TYPE
, V_MMM_SAVE_NOTE IN TSAVEAMT_MMM.SAVE_NOTE%TYPE
, V_MMM_EXPIRE_DATE IN TSAVEAMT_MMM.EXPIRE_DATE%TYPE
, V_MMM_USER_ID IN TSAVEAMT_MMM.PROC_ID%TYPE
, V_MMM_C_CODE IN TSAVEAMT_MMM.C_CODE%TYPE
, V_MMM_SITE_CODE IN TSAVEAMT_MMM.SITE_CODE%TYPE
, ERRCODE OUT VARCHAR2
, ERRNO OUT NUMBER
, ERRMSG OUT VARCHAR2)
IS
    V_MMM_SAVEAMT_MMM_SEQ_MMM TSAVEAMT_MMM.SAVEAMT_MMM_SEQ%TYPE;
    V_MMM_SYSDATETIME   DATE;
    V_MMM_ERRCODE       VARCHAR2(2);
    V_MMM_ERRNO         NUMBER;
    V_MMM_ERRMSG        VARCHAR2(100);
    P_EXPIRE_DATE   DATE;
BEGIN
IF V_MMM_PROC_GB_MMM != '1' AND V_MMM_PROC_GB_MMM != '0' AND V_MMM_PROC_YN != '1' AND V_MMM_PROC_YN != '0'
THEN
        V_MMM_ERRCODE := 'ER';
        V_MMM_ERRNO := 999;
        V_MMM_ERRMSG := 'IT IS WRONG PARAMETER! PROC_GB, PROC_YN';
GOTO ERROR_ROUTINE;
END IF;

    IF V_MMM_PROC_YN = '1'
    THEN
        P_EXPIRE_DATE := V_MMM_EXPIRE_DATE;
    END IF;

    BEGIN
        SELECT LPAD(TO_NUMBER(NVL(MAX(SAVEAMT_MMM_SEQ),200000)) + 1, 10, '0'), SYSDATE
          INTO V_MMM_SAVEAMT_MMM_SEQ_MMM, V_MMM_SYSDATETIME
          FROM TSAVEAMT_MMM
         WHERE MEMB_NO = V_MMM_CUST_NO;
    EXCEPTION WHEN OTHERS THEN
        V_MMM_ERRCODE := 'ER';
        V_MMM_ERRNO := ABS(SQLCODE);
        V_MMM_ERRMSG := SUBSTR (SQLERRM, 1, 100);
        GOTO ERROR_ROUTINE;
    END;

    BEGIN
        INSERT INTO TSAVEAMT_MMM(
          MEMB_NO, SAVEAMT_MMM_SEQ, SAVEAMT_MMM_SEQ_PRE, SAVEAMT_MMM_SEQ_ORG
        , PROC_GB, PROC_YN, ORG_YN, ORDER_NO, ORDER_G_MMM_SEQ, ORDER_D_MMM_SEQ, ORDER_W_MMM_SEQ
        , SAVEAMT_GB, SAVEAMT_CODE, SAVE_NOTE, SAVEAMT, PROC_ID, PROC_DATE
        , EXPIRE_YN, EXPIRE_DATE, EXPIRE_DATE_ORG, USE_YN, USE_AMT, SITE_CODE
        , INSERT_ID, INSERT_DATE, MODIFY_ID, MODIFY_DATE, SAVEAMT_ORG, C_CODE
        )
        VALUES
        (
            V_MMM_CUST_NO, V_MMM_SAVEAMT_MMM_SEQ_MMM, V_MMM_SAVEAMT_MMM_SEQ_MMM, V_MMM_SAVEAMT_MMM_SEQ_MMM
            ,V_MMM_PROC_GB_MMM, V_MMM_PROC_YN, '1', V_MMM_ORDER_NO, V_MMM_ORDER_G_MMM_SEQ, V_MMM_ORDER_D_MMM_SEQ, V_MMM_ORDER_W_MMM_SEQ
            , V_MMM_SAVEAMT_GB, V_MMM_SAVEAMT_CODE, V_MMM_SAVE_NOTE, V_MMM_SAVEAMT, V_MMM_USER_ID, V_MMM_SYSDATETIME
            , '0', DECODE( V_MMM_PROC_YN , '1' , P_EXPIRE_DATE ,''), DECODE( V_MMM_PROC_YN , '1' , P_EXPIRE_DATE ,'')
            , '0', 0, V_MMM_SITE_CODE
            , V_MMM_USER_ID, V_MMM_SYSDATETIME, V_MMM_USER_ID, V_MMM_SYSDATETIME, V_MMM_SAVEAMT, V_MMM_C_CODE
        );
    EXCEPTION WHEN OTHERS THEN
        V_MMM_ERRCODE := 'ER';
        V_MMM_ERRNO := ABS(SQLCODE);
        V_MMM_ERRMSG := SUBSTR (SQLERRM, 1, 100);
        GOTO ERROR_ROUTINE;
    END;

<<COMMIT_ROUTINE>>
  ERRCODE := 'OK';
  ERRNO   := 0 ;
  ERRMSG  := V_MMM_SAVEAMT_MMM_SEQ_MMM ;
  GOTO END_ROUTINE;
<<ERROR_ROUTINE>>
  ERRCODE := V_MMM_ERRCODE ;
  ERRNO   := V_MMM_ERRNO ;
  ERRMSG  := V_MMM_ERRMSG ;
<<END_ROUTINE>>
dbms_output.put_line(ERRCODE||'-'||TO_CHAR(ERRNO)||'-'||ERRMSG) ;
END;

你可能感兴趣的:(mybatis)