From 73783114b4b685a9a00f3d8a0a370b9bb5238c59 Mon Sep 17 00:00:00 2001 From: daido Date: Tue, 17 Oct 2023 10:25:40 +0900 Subject: [PATCH] =?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