対応方法:ERROR 1327 (42000): Undeclared variable: var1
スポンサードリンク
ストアドプロシージャやストアドファンクションを作成する際に、処理で変数を使用しているにも関わらず、変数を宣言なしで作成しようとすると ERROR 1327 (42000): Undeclared variable: 変数名 というエラーが発生します。
エラー発生例
mysql> DELIMITER ; mysql> DELIMITER // mysql> CREATE PROCEDURE test() -> BEGIN -> SELECT 1 INTO var1; -> SELECT var1; -> END -> // ERROR 1327 (42000): Undeclared variable: var1 mysql> DELIMITER ; mysql>
この場合、エラーメッセージに表示されている変数名を、処理で使用する前に宣言するようにします。
DELIMITER // CREATE PROCEDURE test() BEGIN /* 最初に var1 を使用する前に宣言する */ DECLARE var1 INT; SELECT 1 INTO var1; SELECT var1; END // DELIMITER ;
これで次の通りエラーは発生しなくなります。
mysql> DELIMITER // mysql> CREATE PROCEDURE test() -> BEGIN -> /* 最初に var1 を使用する前に宣言する */ -> DECLARE var1 INT; -> SELECT 1 INTO var1; -> SELECT var1; -> END -> // Query OK, 0 rows affected (0.00 sec) ← エラーなしで登録できた mysql> DELIMITER ; mysql> CALL test(); ← 実行時エラーもなし +------+ | var1 | +------+ | 1 | +------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.01 sec) mysql>
スポンサードリンク