深圳全飞鸿

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 588|回复: 0
打印 上一主题 下一主题

mysql三种循环while do...end while,loop...end loop,repeat...end repeat

[复制链接]

104

主题

171

帖子

1179

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1179
跳转到指定楼层
楼主
发表于 2019-6-1 09:07:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
while do ... end while 循环

语法:
  1. [begin_label:] WHILE search_condition DO
  2.     statement_list
  3. END WHILE [end_label]
复制代码


举例:
  1. CREATE PROCEDURE dowhile()
  2. BEGIN
  3.   DECLARE v1 INT DEFAULT 5;

  4.   WHILE v1 > 0 DO
  5.     ...
  6.     SET v1 = v1 - 1;
  7.   END WHILE;
  8. END;
复制代码


while .. end while 的循环条件在循环体开始之前,满足条件则进入循环体。


repeat ... end repeat 循环
语法:
  1. [begin_label:] REPEAT
  2.     statement_list
  3. UNTIL search_condition
  4. END REPEAT [end_label]
复制代码


举例:
  1. mysql> delimiter //

  2. mysql> CREATE PROCEDURE dorepeat(p1 INT)
  3.     -> BEGIN
  4.     ->   SET @x = 0;
  5.     ->   REPEAT
  6.     ->     SET @x = @x + 1;
  7.     ->   UNTIL @x > p1 END REPEAT;
  8.     -> END
  9.     -> //
  10. Query OK, 0 rows affected (0.00 sec)

  11. mysql> CALL dorepeat(1000)//
  12. Query OK, 0 rows affected (0.00 sec)

  13. mysql> SELECT @x//
  14. +------+
  15. | @x   |
  16. +------+
  17. | 1001 |
  18. +------+
  19. 1 row in set (0.00 sec)
复制代码


repeat ... end repeat 循环和 while ... end while 循环有些类似,但是条件判断在循环体末尾,也就是先执行了循环体,再进行条件判断,满足条件了则再次进入循环体,直到条件不成立以后跳出循环。



loop ... end loop 循环
语法:
  1. [begin_label:] LOOP
  2.     statement_list
  3. END LOOP [end_label]
复制代码


举例:
  1. CREATE PROCEDURE doiterate(p1 INT)
  2. BEGIN
  3.   label1: LOOP
  4.     SET p1 = p1 + 1;
  5.     IF p1 < 10 THEN
  6.       ITERATE label1;
  7.     END IF;
  8.     LEAVE label1;
  9.   END LOOP label1;
  10.   SET @x = p1;
  11. END;
复制代码


loop ... leave ... end loop 有点类似饱受争议争议的 goto 命令,但 loop 循环具有严格的循环体,而 goto 循环则是强制跳转,但 loop 循环也可以用于块的条件判断,在完成循环的同时,也适合做一些模块控制的功能,以优化代码逻辑
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|nagomes  

GMT+8, 2025-5-5 11:16 , Processed in 0.030583 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表