1、局部變量
在存儲(chǔ)過程體中可以聲明局部變量谷扣,用來存儲(chǔ)存儲(chǔ)過程體中臨時(shí)結(jié)果竿开。
DECLARE var_name[,…] type [DEFAULT value]
var_name:指定局部變量的名稱
type:用于聲明局部變量的數(shù)據(jù)類型
default子句:用于為局部變量指定一個(gè)默認(rèn)值。若沒有指定掸读,默認(rèn)為null.
使用說明:
局部變量只能在存儲(chǔ)過程體的begin…end語句塊中聲明串远。
局部變量必須在存儲(chǔ)過程體的開頭處聲明宏多。
局部變量的作用范圍僅限于聲明它的begin..end語句塊,其他語句塊中的語句不可以使用它澡罚。
局部變量不同于用戶變量伸但,兩者區(qū)別:局部變量聲明時(shí),在其前面沒有使用@符號(hào)留搔,并且它只能在begin..end語句塊中使用更胖;而用戶變量在聲明時(shí),會(huì)在其名稱前面使用@符號(hào)催式,同時(shí)已聲明的用戶變量存在于整個(gè)會(huì)話之中函喉。
2、SET 語句
使用set語句為局部變量賦值
SET var_name=expr
SET cid=910;
3荣月、SELECT… INTO 語句
把選定列的值直接存儲(chǔ)到局部變量中管呵,語法格式
SELECT col_name[,…] INTO var_name[,…] table_expr
col_name:用于指定列名
var_name:用于指定要賦值的變量名
table_expr:表示select語句中的from字句及后面的語法部分
說明:存儲(chǔ)過程體中的select…into語句返回的結(jié)果集只能有一行數(shù)據(jù)。
4哺窄、定義處理程序
是事先定義程序執(zhí)行過程中可能遇到的問題捐下。并且可以在處理程序中定義解決這些問題的辦法。這種方式可以提前預(yù)測可能出現(xiàn)的問題萌业,并提出解決方法坷襟。
DECLARE handler_type HANDLER FOR condition_value[,…] sp_statement
handler_type:CONTINUE | EXIT | UNDO
Condition_value:Sqlwarning | not found | sqlexception
5、IF語句
IF search_condition THEN statement_list
[ELSEIF search_condition THEN statement_list]…
[ELSE statement_list]
END IF
Search_condition參數(shù):條件判斷語句
Statement_list參數(shù):不同條件的執(zhí)行語句
多重IF的存儲(chǔ)過程實(shí)例
6生年、CASE 語句
CASE case_value
WHEN when_value THEN statement_list
[WHEN when_value THEN statement_list]…
[ELSE statement_list]
END CASE
7婴程、WHILE 語句
WHILE search_condition DO
Statement_list
END WHILE
判斷條件search_condition是否為真,若為真,則執(zhí)行statement_list中的語句,然后再進(jìn)行判斷抱婉,如若仍然為真則繼續(xù)循環(huán)档叔,直至條件判斷不為真時(shí)循環(huán)結(jié)束。
8蒸绩、REPEAT 語句
REPEAT
Statement_list
UNTIL search_condition
END REPEAT
Repeat語句首先執(zhí)行statement_list中的語句衙四,然后判斷條件search_condition是否為真,倘若為真患亿,則結(jié)束循環(huán)传蹈,若不為真,繼續(xù)循環(huán)步藕。
Repeat先執(zhí)行后判斷惦界,while先判斷后執(zhí)行。
9咙冗、LOOP 語句
test:LOOP
SET s1 = s1+1;
IF s1 = 5 THEN
LEAVE test;
END IF;
END LOOP;
LOOP沒有循環(huán)條件表锻,會(huì)不停的循環(huán)直到遇到 "LEAVE test;" "test"是自定義的LOOP標(biāo)記
10、PREPARE 語句
PREPARE statement_name FROM sql_text /*定義*/
EXECUTE statement_name [USING variable [,variable...]] /*執(zhí)行預(yù)處理語句*/
DEALLOCATE PREPARE statement_name /*刪除定義*/