mysql儲存過程中的迴圈語句有三種:1、WHILE迴圈語句,語法「WHILE 條件表示式 DO 迴圈語句 END WHILE」;2、REPEAT迴圈語句,語法「REPEAT 迴圈語句 UNTIL 條件表示式 END REPEAT」;3、LOOP迴圈語句,語法「[begin_label:] LOOP 條件和迴圈語句列表 END LOOP [end_label]」。
本教學操作環境:windows7系統、mysql8版本、Dell G3電腦。
MySQL提供了迴圈語句,允許您根據條件重複執行一段SQL程式碼。有三種迴圈語句在MySQL: WHILE,REPEAT 和LOOP。
WHILE迴圈
WHILE語句的語法如下:
WHILE expression DO statements END WHILE
WHILE 迴圈檢查expression
在每次迭代的開始。如果expression
評估為TRUE
,MySQL將 在評估statements
之間執行 WHILE
,END WHILE
直到expression
評估為止FALSE
。WHILE 迴圈稱為預測試迴圈,因為它在statements
執行之前檢查表示式。
以下流程圖說明了WHILE迴圈語句:
以下是WHILE 在儲存過程中使用迴圈語句的範例:
DELIMITER $$ DROP PROCEDURE IF EXISTS test_mysql_while_loop$$ CREATE PROCEDURE test_mysql_while_loop ( ) BEGIN DECLARE x INT; DECLARE str VARCHAR ( 255 ); SET x = 1; SET str = ''; WHILE x <= 5 DO SET str = CONCAT( str, x, ',' ); SET x = x + 1; END WHILE; SELECT str; END $$ DELIMITER ;
在test_mysql_while_loop上面的儲存過程中:
首先,我們str 重複構建字串,直到x 變數的值 大於5。
然後,我們使用SELECT語句顯示最終字串。
請注意,如果我們不初始化 x變數,則其預設值為NULL。因此,WHILE迴圈語句中的條件始終是TRUE 並且您將具有無限迴圈,這不是期望的。
我們來測試一下test_mysql_while_loop儲存過程:
CALL test_mysql_while_loop();
輸出結果:
REPEAT迴圈
REPEAT 迴圈語句的語法如下:
REPEAT statements UNTIL expression END REPEAT
首先,MySQL執行statements
,然後評估expression
。如果expression
評估為FALSE
,則MySQL statements
重複執行直到expression
評估為止TRUE。
因為REPEAT 迴圈語句expression
在執行後檢查statements
,所以REPEAT迴圈語句也稱為測試後迴圈。
以下流程圖說明了REPEAT迴圈語句:
我們可以test_mysql_while_loop使用WHILE loop語句重寫上面使用REPEAT loop語句的儲存過程:
DELIMITER $$ DROP PROCEDURE IF EXISTS mysql_test_repeat_loop $$ CREATE PROCEDURE mysql_test_repeat_loop ( ) BEGIN DECLARE x INT; DECLARE str VARCHAR ( 255 ); SET x = 1; SET str = ''; REPEAT SET str = CONCAT( str, x, ',' ); SET x = x + 1; UNTIL x > 5 END REPEAT; SELECT str; END $$ DELIMITER ;
注意UNTIL 表示式中沒有分號(;)。
CALL mysql_test_repeat_loop();
輸出結果:
LOOP,LEAVE和ITERATE語句
有兩個語句允許您控制迴圈:
LEAVE語句允許您立即退出迴圈而無需等待檢查條件。LEAVE語句的作用類似於PHP,C / C ++和Java等其他語言中的 break 語句。
ITERATE語句允許您跳過其下的整個程式碼並開始新的迭代。ITERATE語句類似於PHP,C / C ++和Java中的continue語句。
MySQL還為您提供了LOOP一個重複執行程式碼塊的語句,並具有使用迴圈標籤的額外靈活性。
以下是使用LOOP 迴圈語句的範例:
DELIMITER $$ DROP PROCEDURE IF EXISTS test_mysql_loop $$ CREATE PROCEDURE test_mysql_loop() BEGIN DECLARE x INT; DECLARE str VARCHAR ( 255 ); SET x = 1; SET str = ''; loop_label :LOOP IF x > 10 THEN LEAVE loop_label; END IF; SET x = x + 1; IF ( x MOD 2 ) THEN ITERATE loop_label; ELSE SET str = CONCAT( str, x, ',' ); END IF; END LOOP; SELECT str; END $$ DELIMITER ;
測試一下:
call test_mysql_loop();
在這個例子中,
儲存過程僅構造具有偶數的字串,例如,2,4和6。
我們loop_label 在LOOP宣告之前放置了一個迴圈標籤。
如果值 x 大於10,則由於LEAVE語句而終止迴圈。
如果the的值x 是奇數,則ITERATE 語句忽略其下的所有內容並開始新的迭代。
如果the的值x 是偶數,則ELSE語句中的塊將構建具有偶數的字串。
【相關推薦:】
以上就是mysql儲存過程中的迴圈語句有哪些的詳細內容,更多請關注TW511.COM其它相關文章!