はじめに
mariaDBでストアドファンクションを定義している最中、絶対に間違っていないDECLARE文でエラーが出ました。
定義したかったFunction
CREATEORREPLACEFUNCTIONtest(argINT)RETURNSINTDETERMINISTICBEGINDECLAREnumAINTDEFAULT0;SETnumA=arg;DECLAREnumBINTDEFAULT0;SETnumB=numA;RETURNnumB;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
CREATEORREPLACEFUNCTIONtest(argINT)RETURNSINTDETERMINISTICBEGINDECLAREnumAINTDEFAULT0;DECLAREnumBINTDEFAULT0;SETnumA=arg;SETnumB=numA;RETURNnumB;END;
結果
Query OK, 0 rows affected (0.00 sec)
DECLARE
をファンクションの先頭にまとめて書いたらできた。
そういう感じなんだ、勉強になった。。。
参考
https://www.atmarkit.co.jp/ait/articles/0209/12/news001.html