IF search_condition THEN statement_list [ELSEIF search_condition THEN statement_list]... [ELSE statement_list] END IF其中,search_condition 參數列示條件判斷語句,如果返回值為 TRUE ,相應的 SQL 語句列表(statement_list)被執行;如果返回值為 FALSE,則 ELSE 子句的語句列表被執行。statement_list 可以包括一個或多個語句。
注意:MySQL 中的 IF( ) 函數不同於這裡的 IF 語句。
IF age>20 THEN SET @[email protected]+1; ELSEIF age=20 THEN @[email protected]+1; ELSE @[email protected]+1; END lF;該範例根據 age 與 20 的大小關係來執行不同的 SET 語句。如果 age 值大於20,那麼將 count1 的值加 1;如果 age 值等於 20,那麼將 count2 的值加 1;其他情況將 count3 的值加 1。IF 語句都需要使用 END IF 來結束。
CASE case_value WHEN when_value THEN statement_list [WHEN when_value THEN statement_list]... [ELSE statement_list] END CASE其中:
CASE WHEN search_condition THEN statement_list [WHEN search_condition THEN statement_list] ... [ELSE statement_list] END CASE其中,search_condition 參數列示條件判斷語句;statement_list 參數列示不同條件的執行語句。
這裡介紹的 CASE 語句與“控制流程函數”裡描述的 SQL CASE 表示式的 CASE 語句有輕微的不同。這裡的 CASE 語句不能有 ELSE NULL 語句,並且用 END CASE 替代 END 來終止。
CASE age WHEN 20 THEN SET @[email protected]+1; ELSE SET @[email protected]+1; END CASE;程式碼也可以是下面的形式:
CASE WHEN age=20 THEN SET @[email protected]+1; ELSE SET @[email protected]+1; END CASE;本範例中,如果 age 值為 20,count1 的值加 1,否則 count2 的值加 1。
[begin_label:]LOOP statement_list END LOOP [end_label]其中,begin_label 引數和 end_label 引數分別表示迴圈開始和結束的標誌,這兩個標誌必須相同,而且都可以省略;statement_list 參數列示需要迴圈執行的語句。
add_num:LOOP SET @[email protected]+1; END LOOP add_num;該範例回圈執行 count 加 1 的操作。因為沒有跳出迴圈的語句,這個迴圈成了一個死迴圈。LOOP 迴圈都以 END LOOP 結束。
LEAVE label
其中,label 參數列示迴圈的標誌,LEAVE 語句必須跟在迴圈標誌前面。add_num:LOOP SET @[email protected]+1; IF @count=100 THEN LEAVE add_num; END LOOP add num;該範例回圈執行 count 加 1 的操作。當 count 的值等於 100 時,跳出迴圈。
ITERATE label
其中,label 參數列示迴圈的標誌,ITERATE 語句必須跟在迴圈標誌前面。add_num:LOOP SET @[email protected]+1; IF @count=100 THEN LEAVE add_num; ELSE IF MOD(@count,3)=0 THEN ITERATE add_num; SELECT * FROM employee; END LOOP add_num;該範例回圈執行 count 加 1 的操作,count 值為 100 時結束回圈。如果 count 的值能夠整除 3,則跳出本次迴圈,不再執行下面的 SELECT 語句。
說明:LEAVE 語句和 ITERATE 語句都用來跳出迴圈語句,但兩者的功能是不一樣的。LEAVE 語句是跳出整個迴圈,然後執行迴圈後面的程式。而 ITERATE 語句是跳出本次迴圈,然後進入下一次迴圈。使用這兩個語句時一定要區分清楚。
[begin_label:] REPEAT
statement_list
UNTIL search_condition
END REPEAT [end_label]
REPEAT SET @[email protected]+1; UNTIL @count=100 END REPEAT;該範例回圈執行 count 加 1 的操作,count 值為 100 時結束回圈。
[begin_label:] WHILE search_condition DO
statement list
END WHILE [end label]
WHILE @count<100 DO SET @[email protected]+1; END WHILE;該範例回圈執行 count 加 1 的操作,count 值小於 100 時執行迴圈。如果 count 值等於 100 了,則跳出迴圈。