为什么在MySQL中使用@作为变量?

时间:2012-11-27 00:26:01

标签: mysql

  

可能重复:
  MySQL: @variable vs. variable. Whats the difference?

我来自前端背景,如果这个问题看起来很简单,请耐心等待。

我注意到MySQL存储过程中的大多数帖子都使用@来表示变量。我知道这意味着变量是一个会话变量,只要连接处于活动状态,存储过程就会持续存在,但为什么你想要一个变量在1个连接中交叉污染多个存储的proc调用?本地化一切都不是更好吗?如果我不使用@,则在下一次存储的proc调用中将变量重新初始化为NULL,这不是更理想吗?这是出于性能原因吗?

1 个答案:

答案 0 :(得分:1)

@符号表示User-Defined Variable。好像你已经阅读了关于此的手册条目,但无论如何我都会发布这个摘录。

  

您可以在一个语句中将值存储在用户定义的变量中,然后在另一个语句中引用它。这使您可以将值从一个语句传递到另一个语句。用户定义的变量是特定于连接的。也就是说,其他客户端无法看到或使用由一个客户端定义的用户变量。当客户端退出时,将自动释放给定客户端连接的所有变量。

如果在单个连接中有多个存储过程调用,则应该非常了解在整个请求中何时以及是否重新定义变量值时使用了哪些变量。此外,您应该在某些条件下使用交易,这也有助于确保在内部定义的UDV在请求的整个生命周期内不会从外部源损坏。