MySQL “不是變數或 NEW 偽變數” 訊息。我的儲存過程中出現此錯誤是什麼原因?
為了消除此錯誤訊息,讓我們看一個示例。但在那之前,讓我們先了解一下解決此問題的概念。
使用變數從儲存過程中獲取值。變數將以 @ 符號開頭。語法如下:
CALL yourStoredProcedureName(yourParameter1,yourParameter2,..........N,@yourVariableName);
要檢視變數的值,您需要使用 select 語句。語法如下:
SELECT @yourVariableName;
為了理解以上語法,讓我們建立一個表並在表中插入一些記錄。
建立表的查詢如下:
mysql> create table StoredProcedureDemo -> ( -> Id int, -> Name varchar(10) -> ); Query OK, 0 rows affected (1.20 sec)
現在使用 insert 命令在表中插入一些記錄。查詢如下:
mysql> insert into StoredProcedureDemo values(1,'John'); Query OK, 1 row affected (0.31 sec) mysql> insert into StoredProcedureDemo values(2,'Carol'); Query OK, 1 row affected (0.19 sec)
使用 select 語句顯示錶中的所有記錄。查詢如下:
mysql> select *from StoredProcedureDemo;
輸出如下:
+------+-------+ | Id | Name | +------+-------+ | 1 | John | | 2 | Carol | +------+-------+ 2 rows in set (0.00 sec)
以下是返回值的儲存過程。建立儲存過程的查詢如下:
mysql> DELIMITER // mysql> create procedure Update_table(IN Id int, IN Name VARCHAR(20),OUT message VARCHAR(50)) -> BEGIN -> set message= 'DATABASE HAS BEEN UPDATED'; -> INSERT INTO StoredProcedureDemo -> values (Id, Name); -> end; -> // Query OK, 0 rows affected (0.67 sec) mysql> DELIMITER ;
現在使用一些值呼叫儲存過程:
mysql> call Update_table(3,'Larry',@UserMessage);
查詢成功,影響 1 行 (0.13 秒)
使用 select 語句檢查變數 @UserMessage 的值。查詢如下:
mysql> select @UserMessage;
輸出如下:
+---------------------------+ | @UserMessage | +---------------------------+ | DATABASE HAS BEEN UPDATED | +---------------------------+ 1 row in set (0.00 sec)
現在再次檢查表記錄。查詢如下:
mysql> select *from StoredProcedureDemo;
輸出如下:
+------+-------+ | Id | Name | +------+-------+ | 1 | John | | 2 | Carol | | 3 | Larry | +------+-------+ 3 rows in set (0.00 sec)
檢視上面的示例輸出,已插入一個新的 id 為 3 的記錄。現在您將不會收到錯誤訊息。
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP