feat: 例外処理修正の横展開

This commit is contained in:
高木要 2023-06-30 16:55:31 +09:00
parent 3d7512b4df
commit 3bf951c632
2 changed files with 130 additions and 118 deletions

View File

@ -2,69 +2,75 @@
CREATE PROCEDURE src05.inst_merge_t_create() CREATE PROCEDURE src05.inst_merge_t_create()
SQL SECURITY INVOKER SQL SECURITY INVOKER
BEGIN BEGIN
-- スキーマ名 -- スキーマ名
DECLARE schema_name VARCHAR(50) DEFAULT (SELECT DATABASE()); DECLARE schema_name VARCHAR(50) DEFAULT (SELECT DATABASE());
-- プロシージャ名 -- プロシージャ名
DECLARE procedure_name VARCHAR(100) DEFAULT 'inst_merge_t_create'; DECLARE procedure_name VARCHAR(100) DEFAULT 'inst_merge_t_create';
-- プロシージャの引数 -- プロシージャの引数
DECLARE procedure_args JSON DEFAULT JSON_OBJECT(); DECLARE procedure_args JSON DEFAULT JSON_OBJECT();
-- 例外処理 -- 例外処理
DECLARE EXIT HANDLER FOR SQLEXCEPTION DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN BEGIN
GET DIAGNOSTICS CONDITION 1 GET DIAGNOSTICS CONDITION 1
@error_state = RETURNED_SQLSTATE, @error_msg = MESSAGE_TEXT; @error_state = RETURNED_SQLSTATE, @error_msg = MESSAGE_TEXT;
call medaca_common.put_error_log(schema_name, procedure_name, procedure_args, CALL medaca_common.put_error_log(schema_name, procedure_name, procedure_args,
'inst_merge_t_createでエラーが発生', @error_state, @error_msg); 'inst_merge_t_createでエラーが発生', @error_state, @error_msg);
SIGNAL SQLSTATE '45000' SET @error_msg = (
SET MYSQL_ERRNO = @error_state, MESSAGE_TEXT = @error_msg; CASE
END; 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; SET @error_state = NULL, @error_msg = NULL;
call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, CALL medaca_common.put_info_log(schema_name, procedure_name, procedure_args,
'アルトマーク施設統合マスタ(洗替処理一時テーブル)作成① 開始' 'アルトマーク施設統合マスタ(洗替処理一時テーブル)作成① 開始'
); );
TRUNCATE TABLE internal05.inst_merge_t; 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,
'アルトマーク施設統合マスタ(洗替処理一時テーブル)作成① 終了' 'アルトマーク施設統合マスタ(洗替処理一時テーブル)作成① 終了'
); );
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 INSERT INTO
internal05.inst_merge_t ( internal05.inst_merge_t (
dcf_dsf_inst_cd, dcf_dsf_inst_cd,
dup_opp_cd, dup_opp_cd,
form_inst_name_kanji, form_inst_name_kanji,
form_inst_name_kana, form_inst_name_kana,
inst_addr, inst_addr,
prefc_cd prefc_cd
) )
SELECT SELECT
dim.dcf_inst_cd, dim.dcf_inst_cd,
dim.dcf_inst_cd_new, dim.dcf_inst_cd_new,
ci.form_inst_name_kanji, ci.form_inst_name_kanji,
ci.form_inst_name_kana, ci.form_inst_name_kana,
ci.inst_addr, ci.inst_addr,
ci.prefc_cd ci.prefc_cd
FROM FROM
src05.dcf_inst_merge dim src05.dcf_inst_merge AS dim
LEFT OUTER JOIN src05.com_inst ci LEFT OUTER JOIN src05.com_inst AS ci
ON dim.dcf_inst_cd_new = ci.dcf_dsf_inst_cd ON dim.dcf_inst_cd_new = ci.dcf_dsf_inst_cd
AND ci.delete_flg = '0' AND ci.delete_flg = '0'
WHERE WHERE
dim.muko_flg = '0' dim.muko_flg = '0'
AND dim.dcf_inst_cd_new IS NOT NULL AND dim.dcf_inst_cd_new IS NOT NULL
AND dim.enabled_flg = 'Y' AND dim.enabled_flg = 'Y'
AND src05.to_date_yyyymm01(dim.tekiyo_month) <= src05.get_syor_date(); AND src05.to_date_yyyymm01(dim.tekiyo_month) <= src05.get_syor_date();
call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, CALL medaca_common.put_info_log(schema_name, procedure_name, procedure_args,
'アルトマーク施設統合マスタ(洗替処理一時テーブル)作成② 終了' 'アルトマーク施設統合マスタ(洗替処理一時テーブル)作成② 終了'
); );
END END

View File

@ -2,75 +2,81 @@
CREATE PROCEDURE src05.v_inst_merge_t_create() CREATE PROCEDURE src05.v_inst_merge_t_create()
SQL SECURITY INVOKER SQL SECURITY INVOKER
BEGIN BEGIN
-- スキーマ名 -- スキーマ名
DECLARE schema_name VARCHAR(50) DEFAULT (SELECT DATABASE()); DECLARE schema_name VARCHAR(50) DEFAULT (SELECT DATABASE());
-- プロシージャ名 -- プロシージャ名
DECLARE procedure_name VARCHAR(100) DEFAULT 'v_inst_merge_t_create'; DECLARE procedure_name VARCHAR(100) DEFAULT 'v_inst_merge_t_create';
-- プロシージャの引数 -- プロシージャの引数
DECLARE procedure_args JSON DEFAULT JSON_OBJECT(); DECLARE procedure_args JSON DEFAULT JSON_OBJECT();
-- 例外処理 -- 例外処理
DECLARE EXIT HANDLER FOR SQLEXCEPTION DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN BEGIN
GET DIAGNOSTICS CONDITION 1 GET DIAGNOSTICS CONDITION 1
@error_state = RETURNED_SQLSTATE, @error_msg = MESSAGE_TEXT; @error_state = RETURNED_SQLSTATE, @error_msg = MESSAGE_TEXT;
call medaca_common.put_error_log(schema_name, procedure_name, procedure_args, CALL medaca_common.put_error_log(schema_name, procedure_name, procedure_args,
'v_inst_merge_t_createでエラーが発生', @error_state, @error_msg); 'v_inst_merge_t_createでエラーが発生', @error_state, @error_msg);
SIGNAL SQLSTATE '45000' SET @error_msg = (
SET MYSQL_ERRNO = @error_state, MESSAGE_TEXT = @error_msg; CASE
END; 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; SET @error_state = NULL, @error_msg = NULL;
call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, CALL medaca_common.put_info_log(schema_name, procedure_name, procedure_args,
'V施設統合マスタ洗替処理一時テーブル作成① 開始'); 'V施設統合マスタ洗替処理一時テーブル作成① 開始');
TRUNCATE TABLE internal05.v_inst_merge_t; TRUNCATE TABLE internal05.v_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,
'V施設統合マスタ洗替処理一時テーブル作成① 終了'); 'V施設統合マスタ洗替処理一時テーブル作成① 終了');
call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, CALL medaca_common.put_info_log(schema_name, procedure_name, procedure_args,
'V施設統合マスタ洗替処理一時テーブル作成② 開始'); 'V施設統合マスタ洗替処理一時テーブル作成② 開始');
INSERT INTO INSERT INTO
internal05.v_inst_merge_t ( internal05.v_inst_merge_t (
v_inst_cd, v_inst_cd,
v_inst_cd_merge, v_inst_cd_merge,
fcl_name, fcl_name,
fcl_kn_name, fcl_kn_name,
fmt_addr, fmt_addr,
prft_cd, prft_cd,
fcl_type fcl_type
) )
SELECT SELECT
vhmv.v_inst_cd, vhmv.v_inst_cd,
vhmv.v_inst_cd_merg, vhmv.v_inst_cd_merg,
fmv.fcl_name, fmv.fcl_name,
fmv.fcl_kn_name, fmv.fcl_kn_name,
fmv.fmt_addr, fmv.fmt_addr,
fmv.prft_cd, fmv.prft_cd,
fmv.fcl_type fmv.fcl_type
FROM FROM
src05.vop_hco_merge_v vhmv, src05.vop_hco_merge_v AS vhmv,
src05.fcl_mst_v fmv src05.fcl_mst_v AS fmv
INNER JOIN ( INNER JOIN (
SELECT SELECT
v_inst_cd, v_inst_cd,
MAX(sub_num) AS sno MAX(sub_num) AS sno
FROM FROM
src05.fcl_mst_v src05.fcl_mst_v
GROUP BY GROUP BY
v_inst_cd v_inst_cd
) max_sno_fmv ) AS max_sno_fmv
ON fmv.v_inst_cd = max_sno_fmv.v_inst_cd ON fmv.v_inst_cd = max_sno_fmv.v_inst_cd
AND fmv.sub_num = max_sno_fmv.sno AND fmv.sub_num = max_sno_fmv.sno
WHERE WHERE
vhmv.v_inst_cd_merg = fmv.v_inst_cd vhmv.v_inst_cd_merg = fmv.v_inst_cd
AND STR_TO_DATE(vhmv.apply_dt, '%Y-%m-%d') <= src05.get_syor_date() AND STR_TO_DATE(vhmv.apply_dt, '%Y-%m-%d') <= src05.get_syor_date()
AND fmv.rec_sts_kbn != '9'; AND fmv.rec_sts_kbn != '9';
call medaca_common.put_info_log(schema_name, procedure_name, procedure_args, CALL medaca_common.put_info_log(schema_name, procedure_name, procedure_args,
'V施設統合マスタ洗替処理一時テーブル作成② 終了' ); 'V施設統合マスタ洗替処理一時テーブル作成② 終了' );
END END