mysql 中有一种叫 session variables
.翻译过来大概是:会话变量。这是其中的一种变量。
这种变量是以 @
为标志的变量,例如: @var
这种是弱类型的变量,可以在一个会话的任何地方声明,并且在整个会话内有效。
另外一种变量以 DECLARE 关键字声明的变量,只能在存储过程中使用(下面称作“存储过程变量”),例如下面:
DECLARE var1 INT DEFAULT 0;
主要用在存储过程中,或者是给存储传参数中。
两者的区别是:
在调用存储过程时,存储过程变量(就是以 DECLARE 声明的变量)都会被初始化为 NULL ;而会话变量(即 set @var=1 这一类的变量)则不会被再初始化,在一个会话内,只须初始化一次,之后在会话内都是对上一次计算的结果,就相当于在是这个会话内的全局变量。
参考出处:
http://stackoverflow.com/questions/1009954/mysql-variable-vs-variable-whats-the-difference