REPEAT-UNTIL循环
[loopname]:REPEAT
commands;
UNTIL condition
END REPEAT [loopname];
在这种循环里,关键字repeat和until之间的语句将一直循环执行到给定条件第一次得到满足为止,因为对条件表达式的求值发生在每次循环的末尾,所以整个循环语句至少会执行一次。下面的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
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL的循环语句使用总结 - Python技术站