sql中declare是聲明的意思,就是聲明變量的,這個壹般是用在函數和存儲過程中的。比如說,這個存儲過程是,只要妳把學號輸入進來,就能查詢這個學生的班級。那麽在這個存儲過程裏面, 學號就是參數。妳給什麽學號, 它就返回給妳相應的班級。又或者妳也可以做成, 只要妳輸入學號, 這個存儲過程就會將這個學生刪除。
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;
有的時候在查詢更新數據庫的時候,需要多條語句的查詢,因此需要多次修改
declare可以滿足多次執行,但數據只修改壹次。
declare?@local_variable data_type
DECLARE: 定義變量,變量第壹個字母是“@”
聲明時需要指定變量的類型,
可以使用set和select對變量進行賦值,
在sql語句中就可以使用@local_variable來調用變量?
聲明中可以提供值,否則聲明之後所有變量將初始化為NULL。