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

本文详细介绍了MySQL中的三种循环操作:while...endwhile、repeat...endrepeat及loop...endloop,并通过具体实例展示了每种循环的使用方法及特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值