(13)mysql中的流程式控制制,13mysql流程式控制制
概述
在mysql中可以使用if/case/loop/leave/iterate/repeat/while語句進行流程式控制制。
if語句
if語句實現條件判斷,類似進階語言(c/c++/php/java等)中的if語句。
if search_condition then statement_list[elseif search_condition then statement_list]...[else statement_list]end if
舉例
if mobile='13911113222' and psw='720717' then set useridx = 10008888;else if mobile='13911113333' and psw='720717' then set useridx = 10006666;else select UserID into useridx from User_ID order by rand() limit 1;end if;
case語句
case實現比if更複雜的一些分支選擇,類似與進階語言中的 switch語句。
case case_value when when_value then statement_list [when when_value then statement_list]... [else statement_list]end case
舉例
case sid when 2 then set @x1 = 2; else set @x1 = 1;end case
loop、leave、iterate語句
#loop文法[begin_label:] loopstatement_listend loop [end_label]
舉例
set @x=0;set @x2=0;ins:loop set @x=@x+1; if @x=10 then leave ins; elseif mod(@x,2)=0 then iterate ins; end if set @x2=@x2+1;end loop ins;
上面的例子,表示變數x迴圈加1,當x=10,退出迴圈。當x取2的模不為0時候,變數x2加1。
repeat語句
repeat語句是有條件的迴圈控制語句,類似與進階語言中的do...while語句。
[begin_lable:] repeat statement_listuntil search_conditionend repeat [end_lable]
舉例
set @x=0;repeat set @x = @x +1;until @x>10 end repeat;
while語句
while語句是實現有條件的迴圈控制語句,類似與進階語言中的while語句。
[begin_label:] while search_condition do statement_listend while [end_label]
舉例
set @x=10;while @x1<0 do set @x = @x-1;end while;
流程式控制制在預存程序或函數中的運用,參考連結如下:
(9)mysql中的預存程序和自訂函數