1. 程式人生 > >MySQL儲存過程中,定義變數有兩種方式

MySQL儲存過程中,定義變數有兩種方式

MySQL儲存過程中,定義變數有兩種方式:
1.使用set或select直接賦值,變數名以 @ 開頭.
例如:set @var=1;
可以在一個會話的任何地方宣告,作用域是整個會話,稱為會話變數

2.以 DECLARE 關鍵字宣告的變數,只能在儲存過程中使用,稱為儲存過程變數,例如:
DECLARE var1  INT DEFAULT 0;  
主要用在儲存過程中,或者是給儲存傳引數中。

兩者的區別是:
在呼叫儲存過程時,以DECLARE宣告的變數都會被初始化為 NULL。而會話變數(即@開頭的變數)則不會被再初始化,在一個會話內,只須初始化一次,之後在會話內都是對上一次計算的結果,就相當於在是這個會話內的全域性變數。

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