首頁  >  文章  >  資料庫  >  mysql預存程序中的循環語句有哪些

mysql預存程序中的循環語句有哪些

青灯夜游
青灯夜游原創
2022-06-20 11:51:2910363瀏覽

mysql預存程序中的循環語句有三種:1、WHILE循環語句,語法「WHILE 條件表達式DO 循環語句END WHILE」;2、REPEAT循環語句,語法「REPEAT 循環語句UNTIL 條件表達式END REPEAT」;3、LOOP循環語句,語法「[begin_label:] LOOP 條件與循環語句列表END LOOP [end_label]」。

mysql預存程序中的循環語句有哪些

本教學操作環境:windows7系統、mysql8版本、Dell G3電腦。

MySQL提供了一個循環語句,讓您可以根據條件重複執行一段SQL程式碼。有三種循環語句在MySQL: WHILE,REPEAT 和LOOP。

WHILE循環

WHILE語句的語法如下:

WHILE expression DO
   statements
END WHILE

WHILE 循環檢查expression在每次迭代的開始。如果expression評估為TRUE,MySQL將在評估statements之間執行  WHILEEND WHILE#直到expression評估為止FALSE。 WHILE 迴圈稱為預測試循環,因為它在statements 執行之前檢查表達式。

以下流程圖說明了WHILE循環語句:

mysql預存程序中的循環語句有哪些

#以下是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, &#39;,&#39; );
		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();

輸出結果:

mysql預存程序中的循環語句有哪些

##REPEAT循環

REPEAT 迴圈語句的語法如下:

REPEAT
 statements
UNTIL expression
END REPEAT

首先,MySQL執行

statements,然後評估expression。如果expression評估為FALSE,則MySQL statements 重複執行直到expression 評估為止TRUE。

因為REPEAT 循環語句

expression 執行後檢查statements,所以REPEAT循環語句也稱為測試後迴圈。

以下流程圖說明了REPEAT循環語句:

mysql預存程序中的循環語句有哪些

我們可以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 = &#39;&#39;;
	REPEAT
		SET str = CONCAT( str, x, &#39;,&#39; );
		SET x = x + 1;
	UNTIL x > 5 
	END REPEAT;
	SELECT str;
END $$
DELIMITER ;

注意UNTIL 表達式中沒有分號(;)。

CALL mysql_test_repeat_loop();

輸出結果:

mysql預存程序中的循環語句有哪些

#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 = &#39;&#39;;
  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, &#39;,&#39; );
    END IF;
  END LOOP;
  SELECT str;
END $$
DELIMITER ;

測試一下:


call test_mysql_loop();

mysql預存程序中的循環語句有哪些

在這個範例中,

  • 預存程序僅建構具有偶數的字串,例如,2,4和6。

  • 我們loop_label  在LOOP宣告之前放置了一個循環標籤。

  • 如果值  x 大於10,則由於LEAVE語句而終止迴圈。

  • 如果the的值x 是奇數,則ITERATE 語句會忽略其下的所有內容並開始新的迭代。

  • 如果the的值x 是偶數,則ELSE語句中的區塊將建立具有偶數的字串。

【相關推薦:

mysql影片教學

以上是mysql預存程序中的循環語句有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn