MySQL的循环语句使用总结

REPEAT-UNTIL循环

  [loopname]:REPEAT

      commands;

  UNTIL condition

  END REPEAT [loopname];

  在这种循环里,关键字repeatuntil之间的语句将一直循环执行到给定条件第一次得到满足为止,因为对条件表达式的求值发生在每次循环的末尾,所以整个循环语句至少会执行一次。下面的test(n)函数将返回一个包含着n+1个“*”字符的字符串 

 1 CREATE FUNCTION test(n,INT) RETURNS TEXT
 2 BEGIN
 3 DECLARE i INT DEFAULT 0;
 4 DECLARE s  TEXT DEFAULT ' ';
 5 myloop: REPEAT
 6  SET i=i+1;
 7  SET s=CONCAT(s,"*");
 8 UNTIL i>n END REPEAT;
 9     RETURN s;
10 END

 

WHILE循环

 [loopname]:WHILE condition DO

      commands;

  END WHILE [loopname];

1 CREATE PROCEDURE test()
2 BEGIN
3 DECLARE i INT DEFAULT 0;
4 WHILE i<40 DO 
5  INSERT INTO authors(authName) VALUES (CONCAT('authname',i));
6  SET i=i+1;
7 END WHILE;
8 END

 

 LOOP循环

  loopname:LOOP

      commands;

  END LOOP loopname;

   改造repeat-until循环的例子

 1 CREATE FUNCTION test(n,INT) RETURNS TEXT
 2 BEGIN
 3  DECLARE i INT DEFAULT 0;
 4  DECLARE s TEXT DEFAULT ' ';
 5  myloop:LOOP
 6   SET i=i+1;
 7   SET s=CONCAT(s,"*");
 8   IF i>n THEN LEAVE myloop;END IF;
 9 END LOOP myloop;
10 RETURN s;
11 END

LEAVE和ITERATE语句

  LEAVE loopname命令将使程序代码的执行流程跳出一个循环,还可以用来提前退出BEGIN-END语句块

  ITERATE loopname命令的效果是把循环体里的命令再执行一遍。ITERATE命令不能像LEAVE命令那样在BEGIN-END语句块里使用

 1 CREATE PROCEDURE myProc(IN in_count INT)
 2 BEGIN
 3 DECLARE  num INT DEFAULT 0;
 4 increment:LOOP
 5 SET num=num+1;
 6 IF num<20 THEN ITERATE increment;END IF;
 7 IF num>in_count THEN LEAVE increment;
 8 END IF;
 9 END LOOP increment;
10 SELECT num;
11 END

调用存储过程 CAll myProc(5); 输出 20

转载于:https://www.cnblogs.com/SamFlynn/p/4489634.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值