中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql存儲過程中的循環語句怎么寫

發布時間:2022-06-20 13:37:59 來源:億速云 閱讀:5104 作者:iii 欄目:MySQL數據庫

今天小編給大家分享一下mysql存儲過程中的循環語句怎么寫的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

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, ',' );
		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 = '';
	REPEAT
		SET str = CONCAT( str, x, ',' );
		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 = '';
  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 $$
DELIMITER ;

測試一下:

call test_mysql_loop();

mysql存儲過程中的循環語句怎么寫

在這個例子中,

  • 存儲過程僅構造具有偶數的字符串,例如,2,4和6。

  • 我們loop_label  在LOOP聲明之前放置了一個循環標簽。

  • 如果值  x 大于10,則由于LEAVE語句而終止循環。

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

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

以上就是“mysql存儲過程中的循環語句怎么寫”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

汶川县| 措勤县| 兰西县| 灌阳县| 精河县| 波密县| 星子县| 和平区| 淅川县| 卓尼县| 神池县| 都昌县| 大足县| 墨玉县| 杨浦区| 中江县| 丰原市| 荃湾区| 宣化县| 苏州市| 舟山市| 赣榆县| 抚松县| 进贤县| 怀仁县| 佳木斯市| 六安市| 慈溪市| 舒兰市| 扎赉特旗| 肃宁县| 琼海市| 贵港市| 辽宁省| 尉犁县| 安阳县| 寿阳县| 临潭县| 杭锦后旗| 宜良县| 灵台县|