対応方法: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>
スポンサードリンク