久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

如何在mysql存儲過程中使用WHILE,REPEAT和LOOP循環語句

147次閱讀
沒有評論

共計 2679 個字符,預計需要花費 7 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

這篇文章將為大家詳細講解有關如何在 mysql 存儲過程中使用 WHILE,REPEAT 和 LOOP 循環語句,文章內容質量較高,因此丸趣 TV 小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

MySQL 提供循環語句,允許我們根據條件重復執行一個 SQL 代碼塊其中有三個循環語句:WHILE,REPEAT 和 LOOP,我們接下來分別看下。首先是 WHILE 語句來看下語法:

WHILE expression DO
 statements
END WHILE

WHILE 循環在每次迭代開始時檢查表達式。如果 expressionevaluates 為 TRUE,MySQL 將執行 WHILE 和 END WHILE 之間的語句,直到 expressionevaluates 為 FALSE。WHILE 循環稱為預先測試條件循環,因為它總是在執行前檢查語句的表達式。來看下流程圖:

如何在 mysql 存儲過程中使用 WHILE,REPEAT 和 LOOP 循環語句

完事咱們嘗試在存儲過程中使用 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_loopstored 存儲過程:

CALL test_mysql_while_loop();

執行上面查詢語句,得到以下結果:

mysql  CALL test_mysql_while_loop();
+------------+
| str |
+------------+
| 1,2,3,4,5, |
+------------+
1 row in set
Query OK, 0 rows affected

完事再來看 REPEAT 循環語句的語法結構:

REPEAT
 statements;
UNTIL expression
END REPEAT

上述 sql 首先被 mysql 執行,完事 mysql 會評估求值表達式 (expression),如果表達式(expression) 的計算結果為 FALSE,則 mysql 將重復執行該語句,直到該表達式計算結果為 TRUE。因為 REPEAT 循環語句在執行語句后檢查表達式(expression),因此 REPEAT 循環語句也稱為測試后循環。咱們來看下流程圖:

如何在 mysql 存儲過程中使用 WHILE,REPEAT 和 LOOP 循環語句

完事咱們再來使用 REPEAT 循環語句重寫 test_mysql_while_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 表達式中沒有分號(;)。執行上面查詢語句,得到以下結果:

mysql  CALL mysql_test_repeat_loop();
+------------+
| str |
+------------+
| 1,2,3,4,5, |
+------------+
1 row in set
Query OK, 0 rows affected

最后咱們再來看一個使用 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;

上述 sql 具體作用如下:

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

在 LOOP 語句之前放置一個 loop_label 循環標簽。

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

如果 x 的值是一個奇數,ITERATE 語句忽略它下面的所有內容,并開始一個新的迭代。

如果 x 的值是偶數,則 ELSE 語句中的塊將使用偶數構建字符串。

執行上面查詢語句,得到以下結果:

mysql  CALL test_mysql_loop();
+-------------+
| str |
+-------------+
| 2,4,6,8,10, |
+-------------+
1 row in set
Query OK, 0 rows affected

完事咱們再來看下控制循環的兩個關鍵詞:

LEAVE 語句用于立即退出循環,而無需等待檢查條件。LEAVE 語句的工作原理就類似 PHP,C/C++,java 等其他語言的 break 語句一樣。

ITERATE 語句允許您跳過剩下的整個代碼并開始新的迭代。ITERATE 語句類似于 PHP,C/C++,Java 等中的 continue 語句。

關于如何在 mysql 存儲過程中使用 WHILE,REPEAT 和 LOOP 循環語句就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向 AI 問一下細節

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-04發表,共計2679字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 玉环县| 张掖市| 商洛市| 莆田市| 集贤县| 历史| 辽阳市| 丰顺县| 昌邑市| 泰州市| 常熟市| 邻水| 东阿县| 介休市| 涪陵区| 吉安市| 常熟市| 房产| 彩票| 张家港市| 焉耆| 吉首市| 新沂市| 安吉县| 永善县| 乌兰察布市| 馆陶县| 琼结县| 禄丰县| 汝南县| 新河县| 法库县| 东乡县| 札达县| 台东市| 邮箱| 绥江县| 溧水县| 于田县| 谢通门县| 鲁山县|