使用存储过程时声明@variablename和声明变量名之间的区别

时间:2014-08-01 12:58:57

标签: mysql database stored-procedures

我想知道@variablenamevariablename之间的区别。所有的帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

variablename

局部变量

局部变量在存储过程中声明,并且仅在声明它们的BEGIN ... END块内有效。局部变量可以具有任何SQL数据类型。

@variablename

用户变量

在MySQL存储过程中,用户变量以用户变量名称前缀的&符号(@)引用(例如,@ x和@y)。您可以在一个语句中将值存储在用户定义的变量中,然后在另一个语句中引用它。这使您可以将值从一个语句传递到另一个语句。用户定义的变量是特定于会话的。也就是说,其他客户端无法看到或使用由一个客户端定义的用户变量。当客户端退出时,将自动释放给定客户端会话的所有变量。

在MySQL中,变量var1和@ var1是两个不同的东西。 @ var1是一个用户会话变量,它在活动会话期间保持不变。另一个是存储过程的本地。