はじめに
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をファンクションの先頭にまとめて書いたらできた。
そういう感じなんだ、勉強になった。。。
参考