婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > mysql存儲過程之循環語句(WHILE,REPEAT和LOOP)用法分析

mysql存儲過程之循環語句(WHILE,REPEAT和LOOP)用法分析

熱門標簽:萊西市地圖標注 常州網絡外呼系統開發 安徽ai電話電銷機器人有效果嗎 巫師三血與酒地圖標注 在哪里申請400電話 外呼系統電銷受騙 400電話申請信用卡 走過哪個省地圖標注 銷售語音電話機器人

本文實例講述了mysql存儲過程之循環語句(WHILE,REPEAT和LOOP)用法。分享給大家供大家參考,具體如下:

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

WHILE expression DO
  statements
END WHILE

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

完事咱們嘗試在存儲過程中使用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循環語句也稱為測試后循環。咱們來看下流程圖:

完事咱們再來使用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相關內容感興趣的讀者可查看本站專題:《MySQL存儲過程技巧大全》、《MySQL常用函數大匯總》、《MySQL日志操作技巧大全》、《MySQL事務操作技巧匯總》及《MySQL數據庫鎖相關技巧匯總》

希望本文所述對大家MySQL數據庫計有所幫助。

您可能感興趣的文章:
  • MySQL select、insert、update批量操作語句代碼實例
  • Python MySQLdb 執行sql語句時的參數傳遞方式
  • mysql創建表的sql語句詳細總結
  • MySQL模糊查詢語句整理集合
  • Mysql數據庫之常用sql語句進階與總結
  • Mysql數據庫之sql基本語句小結
  • 簡單了解mysql語句書寫和執行順序

標簽:河北 來賓 鞍山 煙臺 黃石 陽江 果洛 赤峰

巨人網絡通訊聲明:本文標題《mysql存儲過程之循環語句(WHILE,REPEAT和LOOP)用法分析》,本文關鍵詞  mysql,存儲,過程,之,循環,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《mysql存儲過程之循環語句(WHILE,REPEAT和LOOP)用法分析》相關的同類信息!
  • 本頁收集關于mysql存儲過程之循環語句(WHILE,REPEAT和LOOP)用法分析的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 柳林县| 施甸县| 邯郸县| 广州市| 东阳市| 沾化县| 明溪县| 岳普湖县| 同德县| 杭州市| 乐东| 西畴县| 冀州市| 平远县| 广饶县| 揭东县| 罗田县| 北川| 南通市| 怀化市| 白朗县| 南木林县| 罗山县| 敖汉旗| 玉屏| 东平县| 巧家县| 无为县| 仙桃市| 东宁县| 福海县| 涟源市| 马关县| 海安县| 诸城市| 青田县| 甘泉县| 玉田县| 镇坪县| 巧家县| 水富县|