MySQL中變量的使用


1,變量的類型

  MySQL中的存儲過程類似java中的方法。既然如此,在存儲過程中也同樣可以使用變量。

  mysql中的變量可以分為以下幾個類型:局部變量,用戶變量,會話變量,全局變量。

2,變量的定義及使用

 

  1,局部變量

    MySQL中的局部變量與java中的局部變量非常類似,java中的局部變量作用域是變量所在的方法,而MySQL中的局部變量作用域是所在的存儲過程。

    以下是局部變量的定義及賦值方式:聲明用到了關鍵字declare。

BEGIN
    #Routine body goes here...
    #變量的定義
    declare var2 int(4);

    #變量的賦值方式一:直接賦值
    set var2 = 2;

    #變量的賦值方式二:將查詢結果賦值給變量
    select u_id into var2 from users where u_name = 'zhangsan';
END

 

  2,用戶變量

    用戶變量類似於java中的成員變量,java中的成員變量使用對象訪問,例如:user.getName();訪問User類中的name成員變量,在不做修改的前提下,無論調用多少次該方法返回值都是一樣的,成員變量的作用域是所在類。MySQL中的用戶變量的作用域是當前連接,聲明、賦值和查詢都是用@符號。

BEGIN
    #Routine body goes here...

    #變量的賦值方式一:直接賦值,方式有以下兩種。
    set @var1 = 2;
    set @var2 := 3;

    #變量的賦值方式二:將查詢結果賦值給變量
    select u_id into @var3 from users where u_name = 'zhangsan';

END

 

  3,會話變量

    服務器為每個連接的客戶端維護一系列會話變量。其作用域僅限於當前連接,即每個連接中的會話變量是獨立的。以下是對於會話變量的相關操作:

#顯示所有的會話變量
show session variables;
       
#查詢會話變量的值,方式有以下三種。
show variables like '%auto_increment_increment%'; #查詢變量值的通用方式
select @@auto_increment_increment;                #使用@@方式查詢
select @@session.auto_increment_increment;        #使用@@session.的方式,類似於java中對象名.變量名 
select @@local.auto_increment_increment;          #使用@@local.的方式,類似於java中對象名.變量名 

#設置會話變量的值,方式有以下三種。
set auto_increment_increment=1;           #直接設置
set session auto_increment_increment=1;   #使用session關鍵字,設置選定的范圍
set @@session.auto_increment_increment=1; #使用@@session.的方式,類似於java中對象名.變量名
set @@local.auto_increment_increment=1;   #使用@@local.的方式,類似於java中對象名.變量名

 

  4,全局變量

    當服務啟動時,它將所有全局變量初始化為默認值。其作用域為server的整個生命周期。

#顯示所有的全局變量
show global variables;

#查詢全局變量的值的兩種方式
show variables like '%sql_warnings%'; #查詢變量值的通用方式
select @@global.sql_warnings;         #使用@@global.的方式,類似於java中對象名.變量名


#設置全局變量的值的兩種方式
set sql_warnings=FALSE;        #直接設置
set global sql_warnings=FALSE; #使用global關鍵字,設置選定的范圍,最好加上global
set @@global.sql_warnings=OFF; #使用@@global.的方式,類似於java中對象名.變量名

 

3,小的注意事項

  declare聲明變量必須在存儲過程的最開始,否則就會出錯。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM