MySQL存儲過程循環【7】
MySQL提供循環語句,允許您根據條件重復執行一個SQL代碼塊。 MySQL中有三個循環語句:
WHILE,REPEAT和LOOP。1、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 ;
2、REPEAT循環
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 ;
3、LOOP,LEAVE和ITERATE語句
有兩個語句允許您用于控制循環:
LEAVE語句用于立即退出循環,而無需等待檢查條件。LEAVE語句的工作原理就類似PHP,C/C++,Java等其他語言的break語句一樣。ITERATE語句允許您跳過剩下的整個代碼并開始新的迭代。ITERATE語句類似于PHP,C/C++,Java等中的continue語句。
MySQL還有一個LOOP語句,它可以反復執行一個代碼塊,另外還有一個使用循環標簽的靈活性。
以下是使用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;

浙公網安備 33010602011771號