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聲明變量必須在存儲過程的最開始,否則就會出錯。