首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 儲存程序循環與條件判斷實戰:LOOP、WHILE、IF、LEAVE、ITERATE 完整範例

     編輯:MySQL 綜合教學

儲存程序流程控制核心語句

  • LOOP ... END LOOP:無條件迴圈,需配合 LEAVE 跳出。
  • WHILE 條件 DO ... END WHILE:前測試迴圈。
  • REPEAT ... UNTIL 條件 END REPEAT:後測試迴圈(本文未示範但支援)。
  • IF ... THEN ... ELSEIF ... ELSE ... END IF:條件分支。
  • LEAVE 標籤:跳出指定迴圈。
  • ITERATE 標籤:跳過本次迴圈剩餘部分,直接進入下一次。

範例一:計數到 10 的 LOOP 迴圈

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 各一行,最後顯示訊息。

範例二:WHILE 迴圈簡化版

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 再檢查參數)。

關鍵提醒

  1. 必須使用 DELIMITER 變更分隔符,避免程序內分號被誤判。
  2. 變數用 DECLARE 宣告,SET 賦值。
  3. 標籤命名建議語義化(如 simple_loop),便於巢狀迴圈管理。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved