PL/SQL1

create or replace PACKAGE BODY KJZ_KJZB01_BTGKJZB0101J18
AS
    C_BATCH_ID               CONSTANT VARCHAR2 ( 20 ) := 'BTGKJZB0101J18'; --バッチID
    C_STUDNT_SITU_UPD_ACPTDT CONSTANT VARCHAR2 ( 30 ) := '受講生状況更新受付データ';   --更新元テーブル名(受講生状況更新受付データ)
    C_ACPT_NUM               CONSTANT VARCHAR2 ( 20 ) := '受付番号';           --受付番号
    C_MEG_ID_00C             CHAR ( 11 ) := 'MSGCOMB000C';                 --メッセージID:MSGCOMB000C
    C_MEG_ID_00G             CHAR ( 11 ) := 'MSGCOMB000G';                 --メッセージID:MSGCOMB000G
    C_MEG_ID_00K             CHAR ( 11 ) := 'MSGCOMB000K';                 --メッセージID:MSGCOMB000K
    P_CUST_NUM               CHAR ( 11 ) ;                                 --顧客番号
    P_INTGRT_AFT_CUST_NUM    CHAR ( 11 ) ;                                 --統合後顧客番号
    P_CMN_RETURN_COD         CHAR ( 1 ) ;                                  --共通部品リターンコード(返回的代?)
    P_COMMIT_CNT             PLS_INTEGER ;                                 --コミット件数 (??件数)
    --受講生状況更新受付データ取得のカーソル定義
    CURSOR CUR_STUDNT_SITU_UPD_ACPTDT
    IS
        SELECT
            ACPT_NUM ,--受付番号
            CUST_NUM  --顧客番号
        FROM
            STUDNT_SITU_UPD_ACPTDT
        WHERE
            ACPT_CHECK_RESLT = CMN_CODE.C_ACR_NO_IMPLMN --受付チェック結果 = 0:未実施
            AND DEL_FLG = CMN_CODE.C_DEL_FLG_UNDEL ;    --AND 削除フラグ = 0:未削除

    --@*************************************************************************
    --@ Name   : STUDNT_SITU_UPD_ACPTDT_UPD(受講生状況更新受付データ更新)
    --@ Summary: ノーマライズの結果を受講生状況更新受付データに反映する。
    --@*************************************************************************
    PROCEDURE STUDNT_SITU_UPD_ACPTDT_UPD (
            I_ACPT_NUM IN VARCHAR2 )
    IS
    BEGIN
        --受講生状況受付チェック更新
        UPDATE
            STUDNT_SITU_UPD_ACPTDT
        SET
            INTGRT_AFT_CUST_NUM =
            CASE
                WHEN P_INTGRT_AFT_CUST_NUM IS NOT NULL   --チェック後補正で取得できた場合に
                THEN P_INTGRT_AFT_CUST_NUM               --チェック後補正で取得されたTO顧客番号
                ELSE INTGRT_AFT_CUST_NUM                 --上記以外の場合に、更新しない
            END ,                                        --統合後顧客番号
            ACPT_CHECK_RESLT = CMN_CODE.C_ACR_NORML ,    --受付チェック結果(1:正常)
            UPD_DATIME = SYSDATE ,                       --更新日時
            UPD_USR_ID = C_BATCH_ID                      --更新ユーザID
        WHERE
            ACPT_NUM = I_ACPT_NUM; --受付番号
        --コミット件数加算(?算件数)
          P_COMMIT_CNT := P_COMMIT_CNT + SQL%ROWCOUNT;
    --例外処理(通用)
    EXCEPTION
    WHEN OTHERS THEN
        RAISE;
    END STUDNT_SITU_UPD_ACPTDT_UPD;

    --@****************************************************************************
    --@ Name    : BTGKJZB0101J18(受講生状況更新受付チェック)
    --@ Summary : 取込処理により受講生状況更新受付データに設定されたデータに対して
    --@           ノーマライズを実施する。
    --@****************************************************************************
    PROCEDURE BTGKJZB0101J18 (
            O_RETURN_COD OUT CHAR --リターンコード
        )
    IS
        V_ARY_MSG CMN_TYPE.TYP_ARY_PARAMS;        --埋め字用パラメータ
        V_ARY_TGT_MSG CMN_TYPE.TYP_ARY_PARAMS;    --対象件数取得メッセージ用埋め字パラメータ
        V_BUSNSS_DATE CHAR ( 8 ) ;                --業務日付
        V_COMMIT_UNIT PLS_INTEGER;                --コミット単位
        V_TOTAL_CNT PLS_INTEGER;                  --受講生状況データの取得件数
    BEGIN
        --バッチ共通開始部品
        CMSKJZ001.START_PROC ( C_BATCH_ID ,--バッチ処理ID
        P_CMN_RETURN_COD ,                 --リターンコード
        V_BUSNSS_DATE ,                    --業務日付
        V_COMMIT_UNIT                      --コミット単位
        ) ;

        --共通部品リターンコード判定
        IF ( P_CMN_RETURN_COD <> CMN_CODE.C_CMN_R_CD_NORMAL ) THEN
            RAISE_APPLICATION_ERROR ( CMN_CODE.C_ERR_NUM_CMSKJZ001 ,CMN_CODE.C_ERR_MESSG_CMSKJZ001 ) ;
        END IF;

        --リターンコード初期値設定
        O_RETURN_COD := CMN_CODE.C_R_CD_NORMAL;
        P_COMMIT_CNT := 0; --コミット件数初期化(受講生状況更新受付データ)
        V_TOTAL_CNT  := 0; --受講生状況データの取得件数初期化

        --入力データを補正するために、取得したデータごとに繰り返す
        FOR V_ROW_STUDNT_SITU_UPD_ACPTDT IN CUR_STUDNT_SITU_UPD_ACPTDT  --V_ROW_STUDNT_SITU_UPD_ACPTDT接受游?的参数
        LOOP
            V_TOTAL_CNT := CUR_STUDNT_SITU_UPD_ACPTDT%ROWCOUNT;  --レコード更新数
            --更新用データ初期化
            P_CUST_NUM := V_ROW_STUDNT_SITU_UPD_ACPTDT.CUST_NUM; --顧客番号
            P_INTGRT_AFT_CUST_NUM := NULL;                       --統合後顧客番号
            
            --顧客統合FROM-TO変換テーブルを使用して統合後顧客番号を補正する
            BEGIN
                SELECT
                    CUST_NUM_TO --顧客番号_TO
                INTO
                    P_INTGRT_AFT_CUST_NUM --統合後顧客番号
                FROM
                    CSTINT_FROMTO_CONVRT_TBL
                WHERE
                    CUST_NUM_FROM = P_CUST_NUM               --顧客番号_FROM = ※受講生状況更新受付データ.顧客番号
                    AND DEL_FLG = CMN_CODE.C_DEL_FLG_UNDEL ; --AND 削除フラグ = 0:未削除
            --例外処理
            EXCEPTION
            --取得できなかった場合
            WHEN NO_DATA_FOUND THEN
                NULL;
            END;

            --受講生状況受付データ更新
            STUDNT_SITU_UPD_ACPTDT_UPD ( V_ROW_STUDNT_SITU_UPD_ACPTDT.ACPT_NUM ) ;

        END LOOP;

        --対象件数出力処理
        V_ARY_TGT_MSG ( 1 ) := C_STUDNT_SITU_UPD_ACPTDT; --受講生状況更新受付データ
        V_ARY_TGT_MSG ( 2 ) := TO_CHAR ( V_TOTAL_CNT ) ; --対象件数
        CMSKJZ003.INFO ( C_MEG_ID_00C ,                  --メッセージID
        MSG_CONST.MSGCOMB000C ,                          --メッセージ
        V_ARY_TGT_MSG ,                                  --埋め字用配列
        C_BATCH_ID ,                                     --ユーザーID
        P_CMN_RETURN_COD ) ;                             --リターンコード

        --DBコミットを行う
        IF ( P_COMMIT_CNT <> 0 ) THEN
            COMMIT;
            V_ARY_TGT_MSG ( 1 ) := C_STUDNT_SITU_UPD_ACPTDT;  --受講生状況更新受付データ
            V_ARY_TGT_MSG ( 2 ) := TO_CHAR ( P_COMMIT_CNT ) ; --コミット件数
            --コミットログ
            CMSKJZ003.INFO ( C_MEG_ID_00G ,--メッセージID
            MSG_CONST.MSGCOMB000G ,        --メッセージ
            V_ARY_TGT_MSG ,                --埋め字用配列
            C_BATCH_ID ,                   --ユーザーID
            P_CMN_RETURN_COD ) ;           --リターンコード
        END IF;

        --正常終了
        O_RETURN_COD := CMN_CODE.C_R_CD_NORMAL;
        --バッチ共通終了部品
        CMSKJZ002.END_PROC ( C_BATCH_ID ,--バッチ処理ID
        V_TOTAL_CNT ,                    --正常処理件数
        V_TOTAL_CNT ,                    --処理対象件数
        V_BUSNSS_DATE ,                  --業務日付
        P_CMN_RETURN_COD ,               --部品用リターンコード
        O_RETURN_COD                     --バッチ用リターンコード
        ) ;

        --共通部品リターンコード判定
        IF ( P_CMN_RETURN_COD <> CMN_CODE.C_CMN_R_CD_NORMAL ) THEN
            RAISE_APPLICATION_ERROR ( CMN_CODE.C_ERR_NUM_CMSKJZ002 ,CMN_CODE.C_ERR_MESSG_CMSKJZ002 ) ;
        END IF;

    --例外処理
    EXCEPTION
    --例外が発生した場合、DBロールバックを行う
    WHEN OTHERS THEN
        --バッチ共通エラー処理
        CMSKJZ051.CMN_ERR_PROC ( C_BATCH_ID ,--バッチ処理ID
        P_CMN_RETURN_COD                     --リターンコード
        ) ;
        --ロールバック
        ROLLBACK;
        --ロールバックメッセージ
        CMSKJZ003.INFO ( C_MEG_ID_00K ,--メッセージID
        MSG_CONST.MSGCOMB000K ,        --メッセージ
        V_ARY_MSG ,                    --埋め字用配列
        C_BATCH_ID ,                   --ユーザーID
        P_CMN_RETURN_COD ) ;           --リターンコード
        --異常終了
        O_RETURN_COD := CMN_CODE.C_R_CD_ERR;
    END BTGKJZB0101J18;

END KJZ_KJZB01_BTGKJZB0101J18;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值