如果我们在mysql中声明一个变量:
declare prev_year int;
Run Code Online (Sandbox Code Playgroud)
是set prev_year = 100;和set @prev_year = 100;一样吗?
有什么区别,因为它们看起来像不同的变量?
不,它们实际上并不相同……但根据所使用的上下文,它们可以被视为相同。
我会解释一下。MySQL 有会话变量,这些变量是您分配的变量,直到会话结束为止(想想连接变量)。这些变量是用@符号声明的。所以你可以执行这两条语句,它就会起作用:
SET @myId := 123;
SELECT * FROM table
WHERE id = @myId;
Run Code Online (Sandbox Code Playgroud)
当您创建存储过程并使用 DECLARE 时,您的变量位于该过程的范围内,例如
DECLARE myId INT;
SELECT id INTO myId FROM table
WHERE name = 'steve';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
955 次 |
| 最近记录: |