mysql變量定義(declare,set,@)使用實例講解

mysql變量的種類

  1. 用戶變量:以"@"開始,形式爲"@變量名"。用戶變量跟mysql客戶端是綁定的,設置的變量,只對當前用戶使用的客戶端生效
  2. 全局變量:定義時,以如下兩種形式出現,set GLOBAL 變量名  或者  set @@global.變量名,對所有客戶端生效。只有具有super權限纔可以設置全局變量
  3. 會話變量:只對連接的客戶端有效。
  4. 局部變量:作用範圍在begin到end語句塊之間。在該語句塊裏設置的變量。declare語句專門用於定義局部變量。set語句是設置不同類型的變量,包括會話變量和全局變量

通俗理解術語之間的區別:

用戶定義的變量就叫用戶變量。這樣理解的話,會話變量和全局變量都可以是用戶定義的變量。只是他們是對當前客戶端生效還是對所有客戶端生效的區別了。所以,用戶變量包括了會話變量和全局變量

局部變量與用戶變量的區分在於兩點:1.用戶變量是以"@"開頭的。局部變量沒有這個符號。2.定義變量不同。用戶變量使用set語句,局部變量使用declare語句定義 3.作用範圍。局部變量只在begin-end語句塊之間有效。在begin-end語句塊運行完之後,局部變量就消失了。

所以,最後它們之間的層次關係是:變量包括局部變量和用戶變量。用戶變量包括會話變量和全局變量。

 

mysql declare定義變量

mysql declare用於定義變量,在存儲過程和函數中通過declare定義變量在BEGIN...END中,且在語句之前。並且可以通過重複定義多個變量

declare變量的作用範圍同編程裏面類似,在這裏一般是在對應的begin和end之間。在end之後這個變量就沒有作用了,不能使用了。這個同編程一樣。

注意:declare定義的變量名不能帶‘@’符號,mysql在這點做的確實不夠直觀,往往變量名會被錯成參數或者字段名。

mysql存儲過程中使用declare定義變量,實例如下:

 

mysql SET定義變量

mysql set也可以用來定於變量,定義變量的形式是以"@"開始,如:"@變量名"。

mysql SET定義變量實例:

複雜一點的實例:

 

mysql declare和set定義變量的區別

mysql declare和set定義變量,除了一個不加@和一個加@這個區別之外,還有以下區別:

declare用來定義局部變量

@用來定義會話變量

declare變量的作用範圍同編程裏面類似,在這裏一般是在對應的begin和end之間。在end之後這個變量就沒有作用了,不能使用了。這個同編程一樣。

另外有種變量叫做會話變量(session variable),也叫做用戶定義的變量(user defined variable)。這種變量要在變量名稱前面加上“@”符號,叫做會話變量,代表整個會話過程他都是有作用的,這個有點類似於全局變量一樣。這種變量用途比較廣,因爲只要在一個會話內(就是某個應用的一個連接過程中),這個變量可以在被調用的存儲過程或者代碼之間共享數據。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章