MySQL “not a variable or NEW pseudo-variable”消息。我的存储过程中出现这个错误是什么原因

MySQL “not a variable or NEW pseudo-variable”消息。我的存储过程中出现这个错误是什么原因

为了消除这个错误消息,让我们看一个样例。但在此之前,让我们了解如何修复这个问题。

使用变量从存储过程中获取值。变量将在其前面加上@符号。语法如下 –

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);

Query OK,1 row affected(0.13 sec)

使用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的记录。现在您将不会收到错误消息。

阅读更多:MySQL 教程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程