mysql存儲過程之變量的定義


mysql存儲過程中declare 和set 定義變量的區別:

->使用set 或者select 直接賦值,變量名以@開頭

例如: set   @var=1;

可以在會話的任何地方聲明,作用域是整個會話,稱為會話變量,也是全局變量

->以declare關鍵字聲明的變量,只能在存儲過程中使用,稱為存儲過程變量。 這種變量需要設置變量類型,而且只存在  begin....end  這段內

例如:

declare  var1  int  default  0 ;

主要用在存儲過程中,或者是給存儲傳參數中。

 

兩者區別:

在調用存儲過程時,declare聲明的變量都會別初始化為null,而會話變量(以@開頭的變量)則不會再被初始化,在一個會話內只被初始化一次,之后是對上一次會話的計算結果,相當於這個會話的全局變量。

 

在存儲過程中,使用動態語句,預處理時,動態內容必須賦給一個會話變量。
例:
set @v_sql= sqltext;
PREPARE stmt FROM @v_sql;  
EXECUTE stmt;     
DEALLOCATE PREPARE stmt;

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

select ....into .....直接將表內內容賦值到指定變量中

select name,bid into @a,@b from bank limit 1;     注意:變量名和字段名不能一致

 

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

存儲過程:

存儲過程將一段通用的操作封裝在一起,這樣在不同平台都可以通用了。

存儲過程沒有返回值,而且沒有sql語句調用,只能是call 調用,而且不返回結果集,執行就執行了。

 

顯示所有存儲過程:

show procedure status;

刪除指定存儲過程:

drop   procedure  存儲過程名 ;

 


免責聲明!

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



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