條件控制 IF條件:條件為真,執行 CASE條件:比對到,執行 循環控制 WHILE循環:先判斷後執行 REPEAT循環:先執行後判斷 LOOP循環(死循環) LEAVE語句(離開) ITERATE語句:疊代,再次循環 RETURN語句:傳回
注意:MySQL不支援FOR循環
一、條件控制:if語句、case語句
如果條件search_condition_1為true,則執行相應的then子句後面的語句清單statement_list_1;
如果條件search_condition_1不為true,則判斷ELSEIF子句中的條件search_condition_2是否為true,如果為true,則執行相應的then子句後面的語句清單statement_list_2;
……
如果所有的條件都不為true,則執行ELSE子句後面的語句。
例1:建立過程,判斷兩個輸入參數哪一個大
解析:輸入的第一個參數對應p1,第二個對應p2,@ax用來接收輸出變量p3;如果p1>p2,輸出1;如果p1=p2,輸出2;其他情況,輸出3。
例2:建立過程,表示出players表和penalties表哪一個行數更多--->IF條件中允許包含标量子查詢
1)simple case:簡易case語句
case_value是一個表達式,該值和每個when子句中的when_value值進行相等比較:
①如果和某個when子句中的when_value值相等,則執行相應的then子句後面的語句statement_list;
②如果沒有when_value值相等,則執行else子句後面的statement_list。
2)searched case:檢索型case語句
對于每個when子句,判斷後面的布爾表達式search_condition是否為true:
①如果某個when子句的條件為true,則執行相應的then子句後面的語句statement_list;
②如果所有的when子句的條件都不為true,則執行else後面的語句statement_list。
注意:
①如果在case中,沒有一個when子句的比較結果為true,并且沒有寫else部分,那麼就抛出異常:‘Case not found for CASE statement’;
②statement_list如果有多條語句,使用begin…end塊包圍起來(複合語句)。
二、循環控制:while循環、repeat循環、loop循環、leave語句、iterate語句
Tips:循環體結構
①條件
②SQL語句體
③程式體裡面需要對條件中的變量進行處理
首先判斷循環開始條件search_condition是否為true(循環結束條件):
如果為true,則執行循環體中的語句statement_list。每執行完一次,都要重新判斷條件search_condition是否為true;
如果條件search_condition為false,則循環結束。
特點:
先判斷,後執行
反複執行循環體中的語句statement_list,直到until條件search_condition 為true時,循環結束
先執行,後判斷
@x:使用者變量,直接使用“set @x=0;”就可以生成這麼一個變量,不需要資料類型,在存儲過程裡定義的使用者變量,存儲過程外面可以通路,一直被儲存。
反複執行循環體中的語句,直到循環結束;
循環的結束使用leave語句。
例:建立過程,等待指定的秒數後結束
作用:用來退出帶标簽的語句塊或者循環
用處:用在 BEGIN ... END中或者循環中 (LOOP, REPEAT, WHILE)
例:建立過程,其中的一個語句塊較早的結束
ITERATE label;
隻能出現在循環LOOP、REPEAT和WHILE 中(有标簽)
含義:跳出本次循環,開始一次新的循環
| @x |
本文轉自zsdnr 51CTO部落格,原文連結:http://blog.51cto.com/12942149/1949799,如需轉載請自行聯系原作者
+------+
| 10 |