1、局部變量
在存儲過程體中可以聲明局部變量,用來存儲存儲過程體中臨時結(jié)果。
DECLARE var_name[,…] type [DEFAULT value]
var_name:指定局部變量的名稱
type:用于聲明局部變量的數(shù)據(jù)類型
default子句:用于為局部變量指定一個默認(rèn)值。若沒有指定,默認(rèn)為null.
使用說明:
局部變量只能在存儲過程體的begin…end語句塊中聲明。
局部變量必須在存儲過程體的開頭處聲明。
局部變量的作用范圍僅限于聲明它的begin..end語句塊,其他語句塊中的語句不可以使用它。
局部變量不同于用戶變量,兩者區(qū)別:局部變量聲明時,在其前面沒有使用@符號,并且它只能在begin..end語句塊中使用;而用戶變量在聲明時,會在其名稱前面使用@符號,同時已聲明的用戶變量存在于整個會話之中。
2、SET 語句
使用set語句為局部變量賦值
SET var_name=expr
SET cid=910;
3、SELECT… INTO 語句
把選定列的值直接存儲到局部變量中,語法格式
SELECT col_name[,…] INTO var_name[,…] table_expr
col_name:用于指定列名
var_name:用于指定要賦值的變量名
table_expr:表示select語句中的from字句及后面的語法部分
說明:存儲過程體中的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的存儲過程實(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),直至條件判斷不為真時循環(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á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 /*刪除定義*/