首页 > 技术文章 > mysql loop if

andydao 2016-02-29 13:17 原文

MYSQL: loop  if

ITERATE: 跳出此次循环,直接进入到下一次循环中

LEAVE: 结束循环,跳出整个循环。

demo如下:

CREATE TABLE t(
    v INT NOT NULL
)ENGINE=INNODB DEFAULT charset=utf8 COMMENT='测试数据表';

#创建存储过程
CREATE PROCEDURE P20()
    BEGIN

                DECLARE v INT;
                SET v=0;

                loop_label: LOOP
                        IF v=3 THEN
                            SET v=v+1;
                            ITERATE loop_label; #跳过此处循环,进入下一次循环 或再次执行loop,等同于goto loop_label 或相当于其他语言的continue
                        END IF;

                        INSERT INTO t VALUES(v);

                        SET v = v+1;
                        IF v>=5 THEN
                            LEAVE loop_label;  #结束循环,跳出整个循环,相当于其他语言的break;
                        END IF;
                END LOOP;
    END;//

CALL P20();  #调用存储过程

SELECT * FROM t;

输出结果为:

推荐阅读