mysql 的三种循环操作 while do ... end while 循环 loop ... end loop 循环 repeat ... end repeat 循环

mysql 的三种循环操作 while do ... end while 循环 loop ... end loop 循环 repeat ... end repeat 循环

blog.csdn.net/joyous/article/details/80169435


while do ... end while 循环

语法:

[begin_label:] WHILE search_condition DO
    statement_list
END WHILE [end_label]

举例:

CREATE PROCEDURE dowhile()
BEGIN
  DECLARE v1 INT DEFAULT 5;

  WHILE v1 > 0 DO
    ...
    SET v1 = v1 - 1;
  END WHILE;
END;

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


repeat ... end repeat 循环

语法:

[begin_label:] REPEAT
    statement_list
UNTIL search_condition
END REPEAT [end_label]

举例:

mysql> delimiter //

mysql> CREATE PROCEDURE dorepeat(p1 INT)
    -> BEGIN
    ->   SET @x = 0;
    ->   REPEAT
    ->     SET @x = @x + 1;
    ->   UNTIL @x > p1 END REPEAT;
    -> END
    -> //
Query OK, 0 rows affected (0.00 sec)

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

mysql> SELECT @x//
+------+
| @x   |
+------+
| 1001 |
+------+
1 row in set (0.00 sec)

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


loop ... end loop 循环

语法:

[begin_label:] LOOP
    statement_list
END LOOP [end_label]

举例:

CREATE PROCEDURE doiterate(p1 INT)
BEGIN
  label1: LOOP
    SET p1 = p1 + 1;
    IF p1 < 10 THEN
      ITERATE label1;
    END IF;
    LEAVE label1;
  END LOOP label1;
  SET @x = p1;
END;

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



blog.csdn.net/joyous/article/details/80169435

Q群讨论 236201801

相关资料:

https://dev.mysql.com/doc/refman/5.7/en/while.html
https://dev.mysql.com/doc/refman/5.7/en/loop.html
https://dev.mysql.com/doc/refman/5.7/en/repeat.html


  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值