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

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

在綠春等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供成都網(wǎng)站制作、做網(wǎng)站 網(wǎng)站設計制作按需網(wǎng)站制作,公司網(wǎng)站建設,企業(yè)網(wǎng)站建設,成都品牌網(wǎng)站建設,營銷型網(wǎng)站建設,外貿網(wǎng)站制作,綠春網(wǎng)站建設費用合理。

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

WHILE expression DO
  statements
END WHILE

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

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

完事咱們嘗試在存儲過程中使用WHILE循環(huán)語句,看個實例:

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循環(huán)語句中的條件始終為TRUE,并且我們將有一個不確定的循環(huán),這是不可預料的。廢話不多說,我們先來調用test_mysql_while_loopstored存儲過程:

CALL test_mysql_while_loop();

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

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

完事再來看REPEAT循環(huán)語句的語法結構:

REPEAT
 statements;
UNTIL expression
END REPEAT

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

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

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

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

最后咱們再來看一個使用LOOP循環(huán)語句的示例:

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具體作用如下:

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

  • 在LOOP語句之前放置一個loop_label循環(huán)標簽。

  • 如果x的值大于10,則由于LEAVE語句,循環(huán)被終止。

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

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

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

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

完事咱們再來看下控制循環(huán)的兩個關鍵詞:

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

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

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

分享名稱:如何在mysql存儲過程中使用WHILE,REPEAT和LOOP循環(huán)語句
當前鏈接:http://muchs.cn/article0/picpio.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供自適應網(wǎng)站、關鍵詞優(yōu)化品牌網(wǎng)站建設、網(wǎng)站收錄、建站公司、動態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

外貿網(wǎng)站建設