MySQL“不是变量或NEW伪变量”消息。我的存储过程中有什么错误?

为了摆脱此错误消息,让我们看一个示例示例。但是在此之前,让我们先通过概念来解决它。

使用变量从存储过程中获取值。该变量将以@符号作为前缀。语法如下-

CALL yourStoredProcedureName(yourParameter1,yourParameter2,..........N,@yourVariableName);

要查看变量的值,您需要使用select语句。语法如下-

SELECT @yourVariableName;

为了理解上述语法,让我们创建一个表并在表中插入一些记录。

创建表的查询如下-

mysql> create table StoredProcedureDemo

   -> (

   -> Id int,

   -> Name varchar(10)

   -> );

现在,使用insert命令在表中插入一些记录。查询如下-

mysql> insert into StoredProcedureDemo values(1,'John');

mysql> insert into StoredProcedureDemo values(2,'Carol');

使用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;

   -> //

mysql> DELIMITER ;

现在使用一些值调用存储过程-

mysql> call Update_table(3,'Larry',@UserMessage);


使用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“不是变量或NEW伪变量”消息。我的存储过程中有什么错误? 的全部内容, 来源链接: utcz.com/z/360470.html

回到顶部