LOOP ... END LOOP:無條件迴圈,需配合 LEAVE 跳出。WHILE 條件 DO ... END WHILE:前測試迴圈。REPEAT ... UNTIL 條件 END REPEAT:後測試迴圈(本文未示範但支援)。IF ... THEN ... ELSEIF ... ELSE ... END IF:條件分支。LEAVE 標籤:跳出指定迴圈。ITERATE 標籤:跳過本次迴圈剩餘部分,直接進入下一次。DELIMITER $$
CREATE PROCEDURE myProc()
BEGIN
DECLARE counter INT DEFAULT 0;
simple_loop: LOOP
SET counter = counter + 1;
SELECT counter;
IF counter = 10 THEN
LEAVE simple_loop;
END IF;
END LOOP simple_loop;
SELECT 'I can count to 10';
END$$
DELIMITER ;
CALL myProc();
輸出 1 到 10 各一行,最後顯示訊息。
CREATE PROCEDURE myProc()
BEGIN
DECLARE i INT DEFAULT 1;
myloop: LOOP
SET i = i + 1;
IF i = 10 THEN LEAVE myloop; END IF;
END LOOP myloop;
SELECT 'I can count to 10';
END
CREATE PROCEDURE increment(IN in_count INT)
BEGIN
DECLARE cnt INT DEFAULT 0;
increment_loop: LOOP
SET cnt = cnt + 1;
IF cnt < 20 THEN ITERATE increment_loop; END IF;
IF cnt > in_count THEN LEAVE increment_loop; END IF;
END LOOP increment_loop;
SELECT cnt;
END
呼叫 CALL increment(3); 返回 20(先遞增至 20 再檢查參數)。
DELIMITER 變更分隔符,避免程序內分號被誤判。DECLARE 宣告,SET 賦值。simple_loop),便於巢狀迴圈管理。