-- A5M2で実行時に[SQL] - [スラッシュ(/)のみの行でSQLを区切る]に変えてから実行する
CREATE PROCEDURE src05.inst_merge_t_create()
SQL SECURITY INVOKER
BEGIN
    -- スキーマ名
    DECLARE schema_name VARCHAR(50) DEFAULT (SELECT DATABASE());
    -- プロシージャ名
    DECLARE procedure_name VARCHAR(100) DEFAULT 'inst_merge_t_create';
    -- プロシージャの引数
    DECLARE procedure_args JSON DEFAULT JSON_OBJECT();	

    -- 例外処理
    DECLARE EXIT HANDLER FOR SQLEXCEPTION 
        BEGIN
            GET DIAGNOSTICS CONDITION 1
                @error_state = RETURNED_SQLSTATE, @error_msg = MESSAGE_TEXT;
            CALL medaca_common.put_error_log(schema_name, procedure_name, procedure_args,
                                    'inst_merge_t_createでエラーが発生', @error_state, @error_msg);
            SET @error_msg = (
                CASE
                WHEN LENGTH(@error_msg) > 128 THEN CONCAT(SUBSTRING(@error_msg, 1, 125), '...')
                ELSE @error_msg
                END
            );
            SIGNAL SQLSTATE '45000'
                SET MYSQL_ERRNO = @error_state, MESSAGE_TEXT = @error_msg;
        END;

    SET @error_state = NULL, @error_msg = NULL;

    CALL medaca_common.put_info_log(schema_name, procedure_name, procedure_args,
                            'アルトマーク施設統合マスタ（洗替処理一時テーブル）作成① 開始' 
    );

    TRUNCATE TABLE internal05.inst_merge_t;

    CALL medaca_common.put_info_log(schema_name, procedure_name, procedure_args,
                            'アルトマーク施設統合マスタ（洗替処理一時テーブル）作成① 終了' 
    );

    CALL medaca_common.put_info_log(schema_name, procedure_name, procedure_args,
                            'アルトマーク施設統合マスタ（洗替処理一時テーブル）作成② 開始' 
    );

    INSERT INTO
        internal05.inst_merge_t (
            dcf_dsf_inst_cd,
            dup_opp_cd,
            form_inst_name_kanji,
            form_inst_name_kana,
            inst_addr,
            prefc_cd
        )
    SELECT 
        dim.dcf_inst_cd,
        dim.dcf_inst_cd_new,
        ci.form_inst_name_kanji,
        ci.form_inst_name_kana,
        ci.inst_addr,
        ci.prefc_cd
    FROM 
        src05.dcf_inst_merge AS dim
    LEFT OUTER JOIN src05.com_inst AS ci
        ON dim.dcf_inst_cd_new = ci.dcf_dsf_inst_cd
        AND ci.delete_flg = '0'
    WHERE
            dim.muko_flg = '0'
        AND dim.dcf_inst_cd_new IS NOT NULL
        AND	dim.enabled_flg = 'Y'
        AND	src05.to_date_yyyymm01(dim.tekiyo_month) <= src05.get_syor_date();

    CALL medaca_common.put_info_log(schema_name, procedure_name, procedure_args,
                            'アルトマーク施設統合マスタ（洗替処理一時テーブル）作成② 終了' 
    );

END
