MySQL中的变量和@variable有啥区别[重复]

Posted

技术标签:

【中文标题】MySQL中的变量和@variable有啥区别[重复]【英文标题】:What is the difference between variable and @variable in MySQL [duplicate]MySQL中的变量和@variable有什么区别[重复] 【发布时间】:2013-03-12 02:32:32 【问题描述】:

如果我们在mysql中声明一个变量为:

declare prev_year int;

set prev_year = 100;set @prev_year = 100; 是否相同?

它们看起来像不同的变量有什么区别?

【问题讨论】:

+1 表示重复 - 在输入答案之前应该检查一下 【参考方案1】:

不,它们实际上并不相同……但根据使用的上下文,它们可以被视为相同。

我会解释的。 MySQL 有会话变量,这些是您分配的变量,直到会话结束(想想连接变量)。这些变量用@ 符号声明。所以你可以执行这两个语句,它会起作用:

SET @myId := 123;

SELECT * FROM table
WHERE id = @myId;

当您创建存储过程并使用 DECLARE 时,您的变量在该过程的范围内,例如

DECLARE myId INT;

SELECT id INTO myId FROM table
WHERE name = 'steve';

【讨论】:

在什么场景下它们是一样的? 对不起,我没有说清楚,您可以在存储过程中使用会话变量,这意味着它们看起来相同,尽管会话变量会持续到会话结束。

以上是关于MySQL中的变量和@variable有啥区别[重复]的主要内容,如果未能解决你的问题,请参考以下文章

GNU Makefile 变量赋值 =、?=、:= 和 += 有啥区别?

张量流中名称范围和变量范围有啥区别?

“受保护”和“受保护静态”变量有啥区别?

tf.placeholder 和 tf.Variable 有啥区别?

MYSQL8 变量“character_set_database”有啥用?

带有“new”的指针和带有“&variable”的指针有啥区别[重复]