(10)mysql中的變數,10mysql中變數

來源:互聯網
上載者:User

(10)mysql中的變數,10mysql中變數
定義變數

文法如下

declare var_name[,...] type [default value];

MYSQL 變數定義只能在預存程序或函數裡面定義,不像 Oracle / SQL Server。該變數的作用範圍只能在begin…end塊中。變數定義必須寫在複合陳述式的開頭,並且在任何其他語句的前面。可以一次聲明多個相同類型的變數。可以使用default賦預設值。declare只能用在局部變數定義中。

#舉例declare v_test int default 10;
設定變數

方式一

set var_name=expr,[,var_name2=expr ...];#舉例set v_test=15;

方式二

select col_name[,...] into var_name[,...] table_expr;#舉例select sid into @a from test1;

如果col_name(如sid)返回多行值,@a最後只會去最後一行值。

變數分類 局部變數(不需要加@)

局部變數一般用在sql語句塊中,比如預存程序的begin/end。其範圍僅限於該語句塊,在該語句塊執行完畢後,局部變數就消失了。局部變數一般用declare來聲明,可以使用default來說明預設值。

create procedure add(in a int,in b int)begin    declare c int default 0;#c定義的局部變數    set c = a + b;    select c as c;end;
使用者變數(一個@)

使用者變數的範圍要比局部變數要廣。使用者變數可以作用於當前整個串連,但是噹噹前串連斷開後,其所定義的使用者變數都會消失。
使用者變數使用如下的方式定義:@變數名

#舉例set @a = 1;set @b = 2;select @sum:=(@a + @b), @dif:=(@a - @b);

結果

會話變數(兩個@@)

伺服器為每個串連的用戶端維護一系列會話變數。在用戶端串連時,使用相應全域變數的當前值對用戶端的會話變數進行初始化。設定會話變數不需要特殊許可權,但用戶端只能更改自己的會話變數,而不能更改其它用戶端的會話變數。會話變數的範圍與使用者變數一樣,僅限於當前串連。噹噹前串連斷開後,其設定的所有會話變數均失效。

#設定會話變數有如下三種方式:set session var_name = value;set @@session.var_name = value;set var_name = value;#查看一個會話變數也有如下三種方式:select @@var_name;select @@session.var_name;show session variables like "%var%";
全域變數(兩個@@)

全域變數影響伺服器整體操作。當伺服器啟動時,它將所有全域變數初始化為預設值。這些預設值可以在選項檔案中或在命令列中指定的選項變更。要想更改全域變數,必須具有SUPER許可權。全域變數作用於server的整個生命週期,但是不能跨重啟。即重啟後所有設定的全域變數均失效。要想讓全域變數重啟後繼續生效,需要更改相應的設定檔。

#要設定一個全域變數,有如下兩種方式:set global var_name = value; set @@global.var_name = value; //同上#要想查看一個全域變數,有如下兩種方式:select @@global.var_name;show global variables like "%var%";

注意:此處的global不能省略。根據手冊,set命令設定變數時若不指定GLOBAL、SESSION或者LOCAL,預設使用SESSION。

參考

http://blog.csdn.net/lxgwm2008/article/details/7738306
http://www.cnblogs.com/qixuejia/archive/2010/12/21/1913203.html

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.