【发布时间】:2013-03-12 02:32:32
【问题描述】:
如果我们在mysql中声明一个变量为:
declare prev_year int;
set prev_year = 100; 和 set @prev_year = 100; 是否相同?
它们看起来像不同的变量有什么区别?
【问题讨论】:
-
+1 表示重复 - 在输入答案之前应该检查一下
如果我们在mysql中声明一个变量为:
declare prev_year int;
set prev_year = 100; 和 set @prev_year = 100; 是否相同?
它们看起来像不同的变量有什么区别?
【问题讨论】:
不,它们实际上并不相同……但根据使用的上下文,它们可以被视为相同。
我会解释的。 MySQL 有会话变量,这些是您分配的变量,直到会话结束(想想连接变量)。这些变量用@ 符号声明。所以你可以执行这两个语句,它会起作用:
SET @myId := 123;
SELECT * FROM table
WHERE id = @myId;
当您创建存储过程并使用 DECLARE 时,您的变量在该过程的范围内,例如
DECLARE myId INT;
SELECT id INTO myId FROM table
WHERE name = 'steve';
【讨论】: