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;