[mariaDB] ストアドファンクション内のDECLARE文でシンタックスエラーが出る
はじめに
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)
定義できた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
をファンクションの先頭にまとめて書いたらできた。
そういう感じなんだ、勉強になった。。。
参考
Author And Source
この問題について([mariaDB] ストアドファンクション内のDECLARE文でシンタックスエラーが出る), 我々は、より多くの情報をここで見つけました https://qiita.com/oic/items/d40f1ed6e90bbe76ac96著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .