Merge pull request #305 feature-NEWDWH2021-1274-Call2_Detail_vod__c into develop-4-crm-medical

This commit is contained in:
下田雅人 2023-10-26 13:31:12 +09:00
commit 2eb962be67
2 changed files with 99 additions and 10 deletions

View File

@ -0,0 +1,89 @@
-- A5M2で実行時に[SQL] - [スラッシュ(/)のみの行でSQLを区切る]に変えてから実行する
-- $$から始まる文字は後からREPLACEする文字を示す独自ルール
-- 当プロシージャは、同一セッション内での並列処理を実行することができない
-- 実行者の権限でストアドプロシージャを実行するために、「SQL SECURITY INVOKER」を付与している
CREATE PROCEDURE `internal02`.`crm_distribution_Call2_Detail_vod__c`()
SQL SECURITY INVOKER
BEGIN
-- 振り分けスキーマ
DECLARE distribution_schema VARCHAR(20);
-- 振り分けカラム
DECLARE target_column_value VARCHAR(100);
-- 振り分け先テーブルID
DECLARE temp_table_id VARCHAR(18);
-- カーソルフェッチステータス
DECLARE fetch_done BOOLEAN DEFAULT FALSE;
-- カーソル設定
DECLARE table_cursor CURSOR FOR SELECT Id, medaca_parent_record_type_id FROM internal02.crm_Call2_Detail_vod__c;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET fetch_done = TRUE;
-- エラー処理
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
GET DIAGNOSTICS CONDITION 1
@error_state = RETURNED_SQLSTATE, @error_msg = MESSAGE_TEXT;
ROLLBACK;
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;
START TRANSACTION;
-- UPSERT STATEMENT設定
SET @upsert_statement_base =
'INSERT INTO $$distribution_schema$$.crm_Call2_Detail_vod__c(
Id, IsDeleted, Name, CreatedDate, CreatedById, LastModifiedDate, LastModifiedById, SystemModstamp, MayEdit,
IsLocked, Is_Parent_Call_vod__c, Call2_vod__c, Product_vod__c, Detail_Priority_vod__c, Mobile_ID_vod__c, Override_Lock_vod__c, Type_vod__c,
file_name, file_row_cnt, delete_flg, ins_user, ins_date, upd_user, upd_date)
SELECT
Id, IsDeleted, Name, CreatedDate, CreatedById, LastModifiedDate, LastModifiedById, SystemModstamp, MayEdit,
IsLocked, Is_Parent_Call_vod__c, Call2_vod__c, Product_vod__c, Detail_Priority_vod__c, Mobile_ID_vod__c, Override_Lock_vod__c, Type_vod__c,
file_name, file_row_cnt, delete_flg, ins_user, ins_date, upd_user, upd_date
FROM
internal02.crm_Call2_Detail_vod__c AS internaltb
WHERE
internaltb.Id = ?
ON DUPLICATE KEY UPDATE
IsDeleted=internaltb.IsDeleted, Name=internaltb.Name, CreatedDate=internaltb.CreatedDate, CreatedById=internaltb.CreatedById,
LastModifiedDate=internaltb.LastModifiedDate, LastModifiedById=internaltb.LastModifiedById, SystemModstamp=internaltb.SystemModstamp,
MayEdit=internaltb.MayEdit, IsLocked=internaltb.IsLocked, Is_Parent_Call_vod__c=internaltb.Is_Parent_Call_vod__c, Call2_vod__c=internaltb.Call2_vod__c,
Product_vod__c=internaltb.Product_vod__c, Detail_Priority_vod__c=internaltb.Detail_Priority_vod__c, Mobile_ID_vod__c=internaltb.Mobile_ID_vod__c,
Override_Lock_vod__c=internaltb.Override_Lock_vod__c, Type_vod__c=internaltb.Type_vod__c,
file_name=internaltb.file_name, file_row_cnt=internaltb.file_row_cnt,
upd_user = CURRENT_USER(), upd_date = CURRENT_TIMESTAMP();';
OPEN table_cursor;
-- ループ
TableCursorLoop: LOOP
-- スキーマ取得
FETCH table_cursor INTO temp_table_id, target_column_value;
-- 終了条件ループ抜き
IF fetch_done THEN
LEAVE TableCursorLoop;
END IF;
SET @distribution_schema = internal02.get_distribution_to_schema('crm_Call2_Detail_vod__c', 'medaca_parent_record_type_id', target_column_value);
SET @temp_table_id = temp_table_id;
SET @upsert_statement = REPLACE(@upsert_statement_base, "$$distribution_schema$$", @distribution_schema);
-- UPSERT実行
PREPARE stmt FROM @upsert_statement;
EXECUTE stmt USING @temp_table_id;
DEALLOCATE PREPARE stmt;
END LOOP;
CLOSE table_cursor;
COMMIT;
END

View File

@ -9,7 +9,7 @@ BEGIN
-- 振り分けスキーマ -- 振り分けスキーマ
DECLARE distribution_schema VARCHAR(20); DECLARE distribution_schema VARCHAR(20);
-- 振り分けカラム -- 振り分けカラム
DECLARE target_column_value VARCHAR(64); DECLARE target_column_value VARCHAR(100);
-- 振り分け先テーブルID -- 振り分け先テーブルID
DECLARE temp_table_id VARCHAR(18); DECLARE temp_table_id VARCHAR(18);
-- カーソルフェッチステータス -- カーソルフェッチステータス
@ -20,7 +20,7 @@ DECLARE table_cursor CURSOR FOR SELECT Id, RecordTypeId FROM internal02.crm_Call
DECLARE CONTINUE HANDLER FOR NOT FOUND SET fetch_done = TRUE; DECLARE CONTINUE HANDLER FOR NOT FOUND SET fetch_done = TRUE;
-- エラー処理 -- エラー処理
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;
@ -38,8 +38,8 @@ DECLARE EXIT HANDLER FOR SQLEXCEPTION
START TRANSACTION; START TRANSACTION;
-- UPSERT STATEMENT設定 -- UPSERT STATEMENT設定
SET @upsert_statement_base = SET @upsert_statement_base =
'INSERT INTO $$distribution_schema$$.crm_Call2_vod__c 'INSERT INTO $$distribution_schema$$.crm_Call2_vod__c
(Id, OwnerId, IsDeleted, Name, RecordTypeId, CreatedDate, CreatedById, LastModifiedDate, LastModifiedById, (Id, OwnerId, IsDeleted, Name, RecordTypeId, CreatedDate, CreatedById, LastModifiedDate, LastModifiedById,
SystemModstamp, LastActivityDate, MayEdit, IsLocked, LastViewedDate, LastReferencedDate, Call_Comments_vod__c, SystemModstamp, LastActivityDate, MayEdit, IsLocked, LastViewedDate, LastReferencedDate, Call_Comments_vod__c,
Sample_Card_vod__c, Add_Detail_vod__c, Property_vod__c, Account_vod__c, zvod_Product_Discussion_vod__c, Sample_Card_vod__c, Add_Detail_vod__c, Property_vod__c, Account_vod__c, zvod_Product_Discussion_vod__c,
@ -84,7 +84,7 @@ SET @upsert_statement_base =
MSJ_SIPAGL_comment__c, MSJ_SIPAGL_4B__c, MSJ_SIPAGL_5B__c, Location_Text_vod__c, Call_Channel_vod__c, MSJ_SIPAGL_comment__c, MSJ_SIPAGL_4B__c, MSJ_SIPAGL_5B__c, Location_Text_vod__c, Call_Channel_vod__c,
MSJ_Scientific_Interaction__c, MSJ_Activity_Email_Reply__c, MSJ_Interaction_Duration__c, MSJ_SIPAGL_1A_date__c, MSJ_Scientific_Interaction__c, MSJ_Activity_Email_Reply__c, MSJ_Interaction_Duration__c, MSJ_SIPAGL_1A_date__c,
MSJ_CoPromotion__c, Call_Channel_Formula_vod__c, file_name, file_row_cnt, delete_flg, ins_user, ins_date, upd_user, upd_date) MSJ_CoPromotion__c, Call_Channel_Formula_vod__c, file_name, file_row_cnt, delete_flg, ins_user, ins_date, upd_user, upd_date)
SELECT SELECT
Id, OwnerId, IsDeleted, Name, RecordTypeId, CreatedDate, CreatedById, LastModifiedDate, LastModifiedById, Id, OwnerId, IsDeleted, Name, RecordTypeId, CreatedDate, CreatedById, LastModifiedDate, LastModifiedById,
SystemModstamp, LastActivityDate, MayEdit, IsLocked, LastViewedDate, LastReferencedDate, Call_Comments_vod__c, SystemModstamp, LastActivityDate, MayEdit, IsLocked, LastViewedDate, LastReferencedDate, Call_Comments_vod__c,
Sample_Card_vod__c, Add_Detail_vod__c, Property_vod__c, Account_vod__c, zvod_Product_Discussion_vod__c, Sample_Card_vod__c, Add_Detail_vod__c, Property_vod__c, Account_vod__c, zvod_Product_Discussion_vod__c,
@ -129,11 +129,11 @@ SET @upsert_statement_base =
MSJ_SIPAGL_comment__c, MSJ_SIPAGL_4B__c, MSJ_SIPAGL_5B__c, Location_Text_vod__c, Call_Channel_vod__c, MSJ_SIPAGL_comment__c, MSJ_SIPAGL_4B__c, MSJ_SIPAGL_5B__c, Location_Text_vod__c, Call_Channel_vod__c,
MSJ_Scientific_Interaction__c, MSJ_Activity_Email_Reply__c, MSJ_Interaction_Duration__c, MSJ_SIPAGL_1A_date__c, MSJ_Scientific_Interaction__c, MSJ_Activity_Email_Reply__c, MSJ_Interaction_Duration__c, MSJ_SIPAGL_1A_date__c,
MSJ_CoPromotion__c, Call_Channel_Formula_vod__c, file_name, file_row_cnt, delete_flg, ins_user, ins_date, upd_user, upd_date MSJ_CoPromotion__c, Call_Channel_Formula_vod__c, file_name, file_row_cnt, delete_flg, ins_user, ins_date, upd_user, upd_date
FROM FROM
internal02.crm_Call2_vod__c AS internaltb internal02.crm_Call2_vod__c AS internaltb
WHERE WHERE
internaltb.Id = ? internaltb.Id = ?
ON DUPLICATE KEY UPDATE ON DUPLICATE KEY UPDATE
OwnerId = internaltb.OwnerId, IsDeleted = internaltb.IsDeleted, Name = internaltb.Name, OwnerId = internaltb.OwnerId, IsDeleted = internaltb.IsDeleted, Name = internaltb.Name,
RecordTypeId = internaltb.RecordTypeId, CreatedDate = internaltb.CreatedDate, CreatedById = internaltb.CreatedById, RecordTypeId = internaltb.RecordTypeId, CreatedDate = internaltb.CreatedDate, CreatedById = internaltb.CreatedById,
LastModifiedDate = internaltb.LastModifiedDate, LastModifiedById = internaltb.LastModifiedById, LastModifiedDate = internaltb.LastModifiedDate, LastModifiedById = internaltb.LastModifiedById,
@ -259,7 +259,7 @@ TableCursorLoop: LOOP
SET @distribution_schema = internal02.get_distribution_to_schema('crm_Call2_vod__c', 'RecordTypeId', target_column_value); SET @distribution_schema = internal02.get_distribution_to_schema('crm_Call2_vod__c', 'RecordTypeId', target_column_value);
SET @temp_table_id = temp_table_id; SET @temp_table_id = temp_table_id;
SET @upsert_statement = REPLACE(@upsert_statement_base, "$$distribution_schema$$", @distribution_schema); SET @upsert_statement = REPLACE(@upsert_statement_base, "$$distribution_schema$$", @distribution_schema);
-- UPSERT実行 -- UPSERT実行