MySQL迴圈語句

大雄45發表於2021-01-27
導讀 mysql常見的三種迴圈方式:while、repeat和loop迴圈。還有一種goto,不推薦使用。
1.while迴圈
-- 設定mysql分隔符為//,也就意味著,當遇到下一個//時,整體執行SQL語句
DELIMITER //
 
DROP PROCEDURE if EXISTS ‘test’;    # 如果存在test儲存過程則刪除
CREATE procedure test() # 建立無參儲存過程,名稱為test
BEGIN
DECLARE i INT;  # 申明變數
SET i = 0;  # 變數賦值
WHILE i<5 DO # 結束迴圈的條件: 當i大於5時跳出while迴圈
INSERT INTO test VALUES(i+11,'test','20');  # 往test表新增資料
SET i = i+1;    # 迴圈一次,i加1
END WHILE;  # 結束while迴圈
SELECT * FROM test; # 檢視test表資料
END
//  # 結束定義語句
CALL test();    # 呼叫儲存過程
DELIMITER ; # 重新將分隔符設定為;
2.repeat迴圈
DELIMITER //
DROP PROCEDURE IF EXISTS test;
CREATE PROCEDURE test()
BEGIN
  DECLARE i INT;
  SET i = 0;
  REPEAT
    INSERT INTO test VALUES(i+11,'test','20');           # 往test表新增資料
    SET i = i + 1;                                  # 迴圈一次,i加一
  UNTIL i > 10 END REPEAT;                           # 結束迴圈的條件: 當i大於10時跳出repeat迴圈
  SELECT * FROM test;
END
//
CALL test();
DELIMITER ;
3.loop迴圈
DELIMITER //
DROP PROCEDURE IF EXISTS test;
CREATE PROCEDURE test()
BEGIN
  DECLARE i INT;
  SET i = 0;
    lp : LOOP                                   # lp為迴圈體名,可隨意 loop為關鍵字
        INSERT INTO test VALUES(i+11,'test','20');   # 往test表新增資料
        SET i = i + 1;                          # 迴圈一次,i加一
        IF i > 10 THEN                       # 結束迴圈的條件: 當i大於10時跳出loop迴圈
                    LEAVE lp;
            END IF;
    END LOOP;
    SELECT * FROM test;
END
//
CALL test();
DELIMITER ;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2753943/,如需轉載,請註明出處,否則將追究法律責任。

相關文章