MySQL中的变量和@variable有什么区别

时间:2013-03-22 09:31:31

标签: mysql database

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

declare prev_year int;

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

有什么区别,因为它们似乎表现得像不同的变量?

1 个答案:

答案 0 :(得分:3)

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

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

SET @myId := 123;

SELECT * FROM table
WHERE id = @myId;

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

DECLARE myId INT;

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