天天看點

mysql 存儲過程中 declare set 變量 差別 difference

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