From a296b92852c1aad43a680996005bec7c2021f5ec Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Thu, 26 Oct 2023 12:35:16 +0900 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20Call2=5FDetail=5Fvod=5F=5Fc?= =?UTF-8?q?=E3=81=AE=E6=8C=AF=E5=88=86=E5=87=A6=E7=90=86=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../crm_distribution_Call2_Detail_vod__c.sql | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 rds_mysql/stored_procedure/internal02/crm_distribution_Call2_Detail_vod__c.sql diff --git a/rds_mysql/stored_procedure/internal02/crm_distribution_Call2_Detail_vod__c.sql b/rds_mysql/stored_procedure/internal02/crm_distribution_Call2_Detail_vod__c.sql new file mode 100644 index 00000000..b312ff7c --- /dev/null +++ b/rds_mysql/stored_procedure/internal02/crm_distribution_Call2_Detail_vod__c.sql @@ -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 \ No newline at end of file From 0ad1de046549f0267ab11a078bc9be2597de6569 Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Thu, 26 Oct 2023 12:36:03 +0900 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20Call2=5Fvod=5F=5Fc=E3=81=AE=E6=A1=81?= =?UTF-8?q?=E6=95=B0=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../crm_distribution_Call2_vod__c.sql | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/rds_mysql/stored_procedure/internal02/crm_distribution_Call2_vod__c.sql b/rds_mysql/stored_procedure/internal02/crm_distribution_Call2_vod__c.sql index 923ddd62..e76a10e8 100644 --- a/rds_mysql/stored_procedure/internal02/crm_distribution_Call2_vod__c.sql +++ b/rds_mysql/stored_procedure/internal02/crm_distribution_Call2_vod__c.sql @@ -9,7 +9,7 @@ BEGIN -- 振り分けスキーマ DECLARE distribution_schema VARCHAR(20); -- 振り分けカラム -DECLARE target_column_value VARCHAR(64); +DECLARE target_column_value VARCHAR(100); -- 振り分け先テーブルID 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 EXIT HANDLER FOR SQLEXCEPTION +DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN GET DIAGNOSTICS CONDITION 1 @error_state = RETURNED_SQLSTATE, @error_msg = MESSAGE_TEXT; @@ -38,8 +38,8 @@ DECLARE EXIT HANDLER FOR SQLEXCEPTION START TRANSACTION; -- UPSERT STATEMENT設定 -SET @upsert_statement_base = - 'INSERT INTO $$distribution_schema$$.crm_Call2_vod__c +SET @upsert_statement_base = + 'INSERT INTO $$distribution_schema$$.crm_Call2_vod__c (Id, OwnerId, IsDeleted, Name, RecordTypeId, CreatedDate, CreatedById, LastModifiedDate, LastModifiedById, 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, @@ -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_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) - SELECT + SELECT Id, OwnerId, IsDeleted, Name, RecordTypeId, CreatedDate, CreatedById, LastModifiedDate, LastModifiedById, 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, @@ -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_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 - FROM - internal02.crm_Call2_vod__c AS internaltb - WHERE + FROM + internal02.crm_Call2_vod__c AS internaltb + WHERE internaltb.Id = ? - ON DUPLICATE KEY UPDATE + ON DUPLICATE KEY UPDATE OwnerId = internaltb.OwnerId, IsDeleted = internaltb.IsDeleted, Name = internaltb.Name, RecordTypeId = internaltb.RecordTypeId, CreatedDate = internaltb.CreatedDate, CreatedById = internaltb.CreatedById, 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 @temp_table_id = temp_table_id; - + SET @upsert_statement = REPLACE(@upsert_statement_base, "$$distribution_schema$$", @distribution_schema); -- UPSERT実行