MySQL"不是变量或新伪变量"消息。我的存储过程中的这个错误是什么?
mysqlmysqli database
要消除此错误消息,让我们看一个示例。但在此之前,让我们先了解一下修复它的概念。
使用变量从存储过程中获取值。变量将以@符号为前缀。语法如下−
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 的新记录。现在您将不会收到错误消息。