5

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

declare prev_year int;

set prev_year = 100;set @prev_year = 100;一样吗?

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

4

1 回答 1

3

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

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

SET @myId := 123;

SELECT * FROM table
WHERE id = @myId;

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

DECLARE myId INT;

SELECT id INTO myId FROM table
WHERE name = 'steve';
于 2013-03-22T09:43:55.260 回答