From b0b64ada16f5bfa638883b113df52408b7997e71 Mon Sep 17 00:00:00 2001 From: daido Date: Wed, 25 Oct 2023 10:30:59 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20crm=5FCall=5FClickstream=5Fvod=5F=5Fc?= =?UTF-8?q?=E3=81=AE=E3=82=B9=E3=83=88=E3=82=A2=E3=83=89=E3=83=97=E3=83=AD?= =?UTF-8?q?=E3=82=B7=E3=83=BC=E3=82=B8=E3=83=A3=E3=82=92=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...m_distribution_Call_Clickstream_vod__c.sql | 109 ++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 rds_mysql/stored_procedure/internal02/crm_distribution_Call_Clickstream_vod__c.sql diff --git a/rds_mysql/stored_procedure/internal02/crm_distribution_Call_Clickstream_vod__c.sql b/rds_mysql/stored_procedure/internal02/crm_distribution_Call_Clickstream_vod__c.sql new file mode 100644 index 00000000..bfd01224 --- /dev/null +++ b/rds_mysql/stored_procedure/internal02/crm_distribution_Call_Clickstream_vod__c.sql @@ -0,0 +1,109 @@ +-- A5M2で実行時に[SQL] - [スラッシュ(/)のみの行でSQLを区切る]に変えてから実行する +-- $$から始まる文字は後からREPLACEする文字を示す独自ルール +-- 当プロシージャは、同一セッション内での並列処理を実行することができない +-- 実行者の権限でストアドプロシージャを実行するために、「SQL SECURITY INVOKER」を付与している +CREATE PROCEDURE `internal02`.`crm_distribution_Call_Clickstream_vod__c`() +SQL SECURITY INVOKER +BEGIN + +-- 振り分けスキーマ +DECLARE distribution_schema VARCHAR(20); +-- 振り分けカラム +DECLARE target_column_value VARCHAR(64); +-- 振り分け先テーブル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_Call_Clickstream_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_Call_Clickstream_vod__c + (Id, IsDeleted, Name, CreatedDate, CreatedById, LastModifiedDate, LastModifiedById, SystemModstamp, MayEdit, + IsLocked, Answer_vod__c, Call_vod__c, Key_Message_vod__c, Mobile_ID_vod__c, Popup_Opened_vod__c, + Possible_Answers_vod__c, Presentation_ID_vod__c, Product_vod__c, Range_Value_vod__c, Rollover_Entered_vod__c, + Selected_Items_vod__c, CLM_ID_vod__c, Question_vod__c, Survey_Type_vod__c, Text_Entered_vod__c, + Toggle_Button_On_vod__c, Track_Element_Description_vod__c, Track_Element_Id_vod__c, Track_Element_Type_vod__c, + Usage_Duration_vod__c, Usage_Start_Time_vod__c, AuxillaryId_vod__c, ParentId_vod__c, Revision_vod__c, + medaca_parent_record_type_id, 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, Answer_vod__c, Call_vod__c, Key_Message_vod__c, Mobile_ID_vod__c, Popup_Opened_vod__c, + Possible_Answers_vod__c, Presentation_ID_vod__c, Product_vod__c, Range_Value_vod__c, Rollover_Entered_vod__c, + Selected_Items_vod__c, CLM_ID_vod__c, Question_vod__c, Survey_Type_vod__c, Text_Entered_vod__c, + Toggle_Button_On_vod__c, Track_Element_Description_vod__c, Track_Element_Id_vod__c, Track_Element_Type_vod__c, + Usage_Duration_vod__c, Usage_Start_Time_vod__c, AuxillaryId_vod__c, ParentId_vod__c, Revision_vod__c, + medaca_parent_record_type_id, file_name, file_row_cnt, delete_flg, ins_user, ins_date, upd_user, upd_date + FROM + internal02.crm_Call_Clickstream_vod__c AS internaltb + WHERE + internaltb.Id = ? + ON DUPLICATE KEY UPDATE + Id = internaltb.Id, 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, + Answer_vod__c = internaltb.Answer_vod__c, Call_vod__c = internaltb.Call_vod__c, + Key_Message_vod__c = internaltb.Key_Message_vod__c, Mobile_ID_vod__c = internaltb.Mobile_ID_vod__c, + Popup_Opened_vod__c = internaltb.Popup_Opened_vod__c, Possible_Answers_vod__c = internaltb.Possible_Answers_vod__c, + Presentation_ID_vod__c = internaltb.Presentation_ID_vod__c, Product_vod__c = internaltb.Product_vod__c, + Range_Value_vod__c = internaltb.Range_Value_vod__c, Rollover_Entered_vod__c = internaltb.Rollover_Entered_vod__c, + Selected_Items_vod__c = internaltb.Selected_Items_vod__c, CLM_ID_vod__c = internaltb.CLM_ID_vod__c, + Question_vod__c = internaltb.Question_vod__c, Survey_Type_vod__c = internaltb.Survey_Type_vod__c, + Text_Entered_vod__c = internaltb.Text_Entered_vod__c, Toggle_Button_On_vod__c = internaltb.Toggle_Button_On_vod__c, + Track_Element_Description_vod__c = internaltb.Track_Element_Description_vod__c, + Track_Element_Id_vod__c = internaltb.Track_Element_Id_vod__c, Track_Element_Type_vod__c = internaltb.Track_Element_Type_vod__c, + Usage_Duration_vod__c = internaltb.Usage_Duration_vod__c, Usage_Start_Time_vod__c = internaltb.Usage_Start_Time_vod__c, + AuxillaryId_vod__c = internaltb.AuxillaryId_vod__c, ParentId_vod__c = internaltb.ParentId_vod__c, + Revision_vod__c = internaltb.Revision_vod__c, medaca_parent_record_type_id = internaltb.medaca_parent_record_type_id, + 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_Call_Clickstream_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