はじめに
mariaDBでストアドファンクションを定義している最中、絶対に間違っていないDECLARE文でエラーが出ました。
定義したかったFunction
CREATE OR REPLACE FUNCTION test (arg INT)
RETURNS INT DETERMINISTIC
BEGIN
DECLARE numA INT DEFAULT 0;
SET numA = arg;
DECLARE numB INT DEFAULT 0;
SET numB = numA;
RETURN numB;
END;
受け取った引数を変数numA
に入れて、
numA
を変数numB
に入れて、
numB
をreturnするだけ。
結果
ERROR 1064 (42000) at line 3 in file: '(ファイル名)': You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'DECLARE numB INT DEFAULT 0;
SET numB = numA;
RETURN numB;
END' at line 8
DECLARE numB INT DEFAULT 0;
の辺りがおかしいよと。
え~?numA
はよくてnumB
はダメなの?
変数宣言は先頭だけだった
定義できたFunction
CREATE OR REPLACE FUNCTION test (arg INT)
RETURNS INT DETERMINISTIC
BEGIN
DECLARE numA INT DEFAULT 0;
DECLARE numB INT DEFAULT 0;
SET numA = arg;
SET numB = numA;
RETURN numB;
END;
結果
Query OK, 0 rows affected (0.00 sec)
DECLARE
をファンクションの先頭にまとめて書いたらできた。
そういう感じなんだ、勉強になった。。。
参考