1.loop
语法:
[begin_label:] LOOPstatement_listEND LOOP [end_label]
例子:
CREATE PROCEDURE doiterate(p1 INT) BEGIN label1: LOOP SET p1 = p1 + 1; IF p1 < 10 THEN ITERATE label1;//ITERATEcan appear only withinLOOP,REPEAT, andWHILEstatements.ITERATEmeans “start the loop again.” END IF; LEAVE label1;//LEAVEcan be used withinBEGIN ... ENDor loop constructs (LOOP,REPEAT,WHILE). END LOOP label1; SET @x = p1; END;
2.repeat
语法
[begin_label:] REPEATstatement_listUNTILsearch_conditionEND 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)
3.while
语法
[begin_label:] WHILEsearch_conditionDOstatement_listEND WHILE [end_label]
例子:
CREATE PROCEDURE dowhile()
BEGIN
DECLARE v1 INT DEFAULT 5;
WHILE v1 > 0 DO
...
SET v1 = v1 - 1;
END WHILE;
END;
4.label标记语法
[begin_label:] BEGIN [statement_list] END [end_label] [begin_label:] LOOPstatement_listEND LOOP [end_label] [begin_label:] REPEATstatement_listUNTILsearch_conditionEND REPEAT [end_label] [begin_label:] WHILEsearch_conditionDOstatement_listEND WHILE [end_label]
mysql流控制语句(LOOP, REPEAT, WHILE)
原文:http://www.cnblogs.com/wyzs/p/6223230.html