feat:振分先蓄積スキーマ取得のストアドファンクションのファイルを追加

This commit is contained in:
daido 2023-10-17 10:25:40 +09:00
parent 36650b483f
commit 73783114b4

View File

@ -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