From 73783114b4b685a9a00f3d8a0a370b9bb5238c59 Mon Sep 17 00:00:00 2001 From: daido Date: Tue, 17 Oct 2023 10:25:40 +0900 Subject: [PATCH 1/5] =?UTF-8?q?feat:=E6=8C=AF=E5=88=86=E5=85=88=E8=93=84?= =?UTF-8?q?=E7=A9=8D=E3=82=B9=E3=82=AD=E3=83=BC=E3=83=9E=E5=8F=96=E5=BE=97?= =?UTF-8?q?=E3=81=AE=E3=82=B9=E3=83=88=E3=82=A2=E3=83=89=E3=83=95=E3=82=A1?= =?UTF-8?q?=E3=83=B3=E3=82=AF=E3=82=B7=E3=83=A7=E3=83=B3=E3=81=AE=E3=83=95?= =?UTF-8?q?=E3=82=A1=E3=82=A4=E3=83=AB=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../internal02/get_distribution_to_schema.sql | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 rds_mysql/stored_procedure/internal02/get_distribution_to_schema.sql diff --git a/rds_mysql/stored_procedure/internal02/get_distribution_to_schema.sql b/rds_mysql/stored_procedure/internal02/get_distribution_to_schema.sql new file mode 100644 index 00000000..745b0dbe --- /dev/null +++ b/rds_mysql/stored_procedure/internal02/get_distribution_to_schema.sql @@ -0,0 +1,57 @@ +CREATE FUNCTION `get_distribution_to_schema`(target_table VARCHAR(255), target_column VARCHAR(255), target_column_value VARCHAR(255)) +RETURNS VARCHAR(20) +DETERMINISTIC + +BEGIN + DECLARE ret VARCHAR(20) DEFAULT NULL; + DECLARE distribution_schema_other VARCHAR(20); + DECLARE value_table_id VARCHAR(100); + DECLARE value_from_column_id VARCHAR(100); + DECLARE value_from_column_value VARCHAR(100); + DECLARE value_to_schema VARCHAR(20); + + -- カーソルがデータセットの最後に達したか判定するための変数を宣言 + DECLARE done INT DEFAULT FALSE; + + -- カーソルを定義 + DECLARE myCursor CURSOR FOR + SELECT `table_id`, `from_column_id`, `from_column_value`, `to_schema` + FROM `crm_data_distribution_settings` + WHERE `table_id` = target_table + AND `from_column_id` = target_column; + + -- カーソルがデータセットの最後に達したときの動作を制御 + DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; + + -- カーソルをオープン + OPEN myCursor; + + -- ループで1行ずつ処理 + read_loop: LOOP + -- カーソルから1行読み出し + FETCH myCursor INTO value_table_id, value_from_column_id, value_from_column_value, value_to_schema; + + -- カーソルからの読み出しが最後に達していればループを抜ける + IF done THEN + LEAVE read_loop; + END IF; + + IF value_from_column_value = target_column_value THEN + SET ret = value_to_schema; + END IF; + + IF value_from_column_value = 'other' THEN + SET distribution_schema_other = value_to_schema; + END IF; + + END LOOP; + + -- カーソルを閉じる + CLOSE myCursor; + + IF ret = NULL THEN + SET ret = distribution_schema_other; + END IF; + + RETURN ret; +END From 14eaa37dc3222318d2769d9f43776d6943d55d5f Mon Sep 17 00:00:00 2001 From: daido Date: Tue, 17 Oct 2023 14:13:42 +0900 Subject: [PATCH 2/5] =?UTF-8?q?feat:=E4=BE=8B=E5=A4=96=E3=82=92=E3=82=B9?= =?UTF-8?q?=E3=83=AD=E3=83=BC=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= =?UTF-8?q?=E8=BF=BD=E8=A8=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../internal02/get_distribution_to_schema.sql | 34 ++++++++++--------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/rds_mysql/stored_procedure/internal02/get_distribution_to_schema.sql b/rds_mysql/stored_procedure/internal02/get_distribution_to_schema.sql index 745b0dbe..a94b233d 100644 --- a/rds_mysql/stored_procedure/internal02/get_distribution_to_schema.sql +++ b/rds_mysql/stored_procedure/internal02/get_distribution_to_schema.sql @@ -1,21 +1,18 @@ -CREATE FUNCTION `get_distribution_to_schema`(target_table VARCHAR(255), target_column VARCHAR(255), target_column_value VARCHAR(255)) +CREATE FUNCTION `get_distribution_to_schema`(target_table VARCHAR(100), target_column VARCHAR(100), target_column_value VARCHAR(100)) RETURNS VARCHAR(20) DETERMINISTIC BEGIN DECLARE ret VARCHAR(20) DEFAULT NULL; DECLARE distribution_schema_other VARCHAR(20); - DECLARE value_table_id VARCHAR(100); - DECLARE value_from_column_id VARCHAR(100); DECLARE value_from_column_value VARCHAR(100); DECLARE value_to_schema VARCHAR(20); - -- カーソルがデータセットの最後に達したか判定するための変数を宣言 + -- カーソルがデータセットの最後に達したか判定するための変数 DECLARE done INT DEFAULT FALSE; - -- カーソルを定義 - DECLARE myCursor CURSOR FOR - SELECT `table_id`, `from_column_id`, `from_column_value`, `to_schema` + DECLARE cursor_crm_data_distribution_settings CURSOR FOR + SELECT `from_column_value`, `to_schema` FROM `crm_data_distribution_settings` WHERE `table_id` = target_table AND `from_column_id` = target_column; @@ -23,13 +20,10 @@ BEGIN -- カーソルがデータセットの最後に達したときの動作を制御 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; - -- カーソルをオープン - OPEN myCursor; + OPEN cursor_crm_data_distribution_settings; - -- ループで1行ずつ処理 read_loop: LOOP - -- カーソルから1行読み出し - FETCH myCursor INTO value_table_id, value_from_column_id, value_from_column_value, value_to_schema; + FETCH cursor_crm_data_distribution_settings INTO value_from_column_value, value_to_schema; -- カーソルからの読み出しが最後に達していればループを抜ける IF done THEN @@ -40,16 +34,24 @@ BEGIN SET ret = value_to_schema; END IF; + -- カーソルから読み出した行が'other'かを判断 IF value_from_column_value = 'other' THEN SET distribution_schema_other = value_to_schema; END IF; - END LOOP; - -- カーソルを閉じる - CLOSE myCursor; + CLOSE cursor_crm_data_distribution_settings; + + -- 例外処理 + IF distribution_schema_other IS NULL THEN + SET @error_msg = 'データ振分設定テーブルにotherの設定がされていません。テーブルID: $$target_table$$, 振分判断項目ID: $$target_column$$'; + SET @error_msg = REPLACE(@error_msg, "$$target_table$$", target_table); + SET @error_msg = REPLACE(@error_msg, "$$target_column$$", target_column); + SIGNAL SQLSTATE '45000' + SET MESSAGE_TEXT = @error_msg; + END IF; - IF ret = NULL THEN + IF ret IS NULL THEN SET ret = distribution_schema_other; END IF; From 46b9572ac7a70b1cb82cba3bdaf37adc4cc969ce Mon Sep 17 00:00:00 2001 From: daido Date: Tue, 17 Oct 2023 14:32:14 +0900 Subject: [PATCH 3/5] =?UTF-8?q?feat:=E5=85=88=E9=A0=AD=E8=A1=8C=E3=81=AB?= =?UTF-8?q?=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../stored_procedure/internal02/get_distribution_to_schema.sql | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rds_mysql/stored_procedure/internal02/get_distribution_to_schema.sql b/rds_mysql/stored_procedure/internal02/get_distribution_to_schema.sql index a94b233d..f55e6af4 100644 --- a/rds_mysql/stored_procedure/internal02/get_distribution_to_schema.sql +++ b/rds_mysql/stored_procedure/internal02/get_distribution_to_schema.sql @@ -1,3 +1,5 @@ +-- A5M2で実行時に[SQL] - [スラッシュ(/)のみの行でSQLを区切る]に変えてから実行する +-- $$から始まる文字は後からREPLACEする文字を示す独自ルール CREATE FUNCTION `get_distribution_to_schema`(target_table VARCHAR(100), target_column VARCHAR(100), target_column_value VARCHAR(100)) RETURNS VARCHAR(20) DETERMINISTIC From 98e18a6041e05b15a9729ce8f3e89e7fb584029b Mon Sep 17 00:00:00 2001 From: daido Date: Tue, 17 Oct 2023 14:58:06 +0900 Subject: [PATCH 4/5] =?UTF-8?q?feat:=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88?= =?UTF-8?q?=E3=82=92=E8=BF=BD=E5=8A=A0=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../internal02/get_distribution_to_schema.sql | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/rds_mysql/stored_procedure/internal02/get_distribution_to_schema.sql b/rds_mysql/stored_procedure/internal02/get_distribution_to_schema.sql index f55e6af4..e4c8a37f 100644 --- a/rds_mysql/stored_procedure/internal02/get_distribution_to_schema.sql +++ b/rds_mysql/stored_procedure/internal02/get_distribution_to_schema.sql @@ -5,21 +5,26 @@ RETURNS VARCHAR(20) DETERMINISTIC BEGIN + -- 返却値 DECLARE ret VARCHAR(20) DEFAULT NULL; - DECLARE distribution_schema_other VARCHAR(20); - DECLARE value_from_column_value VARCHAR(100); - DECLARE value_to_schema VARCHAR(20); - + -- other振分先蓄積スキーマ + DECLARE distribution_schema_other VARCHAR(20) DEFAULT NULL; + -- 振分判断項目値 + DECLARE value_from_column_value VARCHAR(100) DEFAULT NULL; + -- 振分先蓄積スキーマ + DECLARE value_to_schema VARCHAR(20) DEFAULT NULL; + -- カーソルがデータセットの最後に達したか判定するための変数 DECLARE done INT DEFAULT FALSE; + -- カーソル DECLARE cursor_crm_data_distribution_settings CURSOR FOR SELECT `from_column_value`, `to_schema` FROM `crm_data_distribution_settings` WHERE `table_id` = target_table AND `from_column_id` = target_column; - -- カーソルがデータセットの最後に達したときの動作を制御 + -- カーソルがデータセットをフェッチしきった時の動作を制御 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN cursor_crm_data_distribution_settings; @@ -27,7 +32,7 @@ BEGIN read_loop: LOOP FETCH cursor_crm_data_distribution_settings INTO value_from_column_value, value_to_schema; - -- カーソルからの読み出しが最後に達していればループを抜ける + -- カーソルの読み出しが完了していればループを抜ける IF done THEN LEAVE read_loop; END IF; From 19d2bf326d88916720a539e46b1fd7cdaf0af4fa Mon Sep 17 00:00:00 2001 From: daido Date: Wed, 18 Oct 2023 09:03:59 +0900 Subject: [PATCH 5/5] =?UTF-8?q?feat:=E3=83=AC=E3=83=93=E3=83=A5=E3=83=BC?= =?UTF-8?q?=E6=8C=87=E6=91=98=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../stored_procedure/internal02/get_distribution_to_schema.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rds_mysql/stored_procedure/internal02/get_distribution_to_schema.sql b/rds_mysql/stored_procedure/internal02/get_distribution_to_schema.sql index e4c8a37f..9eb02059 100644 --- a/rds_mysql/stored_procedure/internal02/get_distribution_to_schema.sql +++ b/rds_mysql/stored_procedure/internal02/get_distribution_to_schema.sql @@ -20,7 +20,7 @@ BEGIN -- カーソル DECLARE cursor_crm_data_distribution_settings CURSOR FOR SELECT `from_column_value`, `to_schema` - FROM `crm_data_distribution_settings` + FROM intenal02.`crm_data_distribution_settings` WHERE `table_id` = target_table AND `from_column_id` = target_column;