feat:例外をスローするように追記
This commit is contained in:
parent
73783114b4
commit
14eaa37dc3
@ -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;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user