MySQL存储过程中的循环怎么写

MySQL存储过程中的循环怎么写
强烈推介IDEA2020.2破解激活,IntelliJ IDEA 注册码,2020.2 IDEA 激活码

在MySQL存储过程的语句中有三个标准的循环方式:WHILE循环,LOOP循环以及REPEAT循环。还有一种非标准的循环方式:GOTO,不过这种循环方式最好别用,很容易引起程序的混乱,在这里就不错具体介绍了。

这几个循环语句的格式如下:
WHILE……DO……END WHILE
REPEAT……UNTIL END REPEAT
LOOP……END LOOP
GOTO。

下面首先使用第一种循环编写一个例子。

复制代码

DROP PROCEDURE IF EXISTS `pro10`;
DELIMITER $$
CREATE PROCEDURE `pro10`()
BEGIN
    -- 定义变量
    DECLARE v_i int unsigned DEFAULT 0;
    WHILE v_i < 5 DO
        SELECT v_i;
        SET v_i = v_i+1;
    END WHILE;
END $$
DELIMITER ;

CALL pro10();

复制代码

再来看一下第二个循环控制指令 REPEAT……END REPEAT。使用REPEAT循环控制语句编写下面这个存储过程:

复制代码

DROP PROCEDURE IF EXISTS `pro11`;
DELIMITER $$
CREATE PROCEDURE `pro11`()
BEGIN
    -- 定义变量
    DECLARE v_i int unsigned DEFAULT 0;
    REPEAT
        SELECT v_i;
        SET v_i = v_i+1;
    UNTIL v_i >= 5 END REPEAT;
END $$
DELIMITER ;

CALL pro11();

复制代码

再来看一下第三个循环控制语句LOOP……END LOOP。编写一个存储过程程序如下:

复制代码

DROP PROCEDURE IF EXISTS `pro12`;
DELIMITER $$
CREATE PROCEDURE `pro12`()
BEGIN
    -- 定义变量
    DECLARE v_i int unsigned DEFAULT 0;
    LOOP_LABEL:LOOP
        SELECT v_i;
        SET v_i = v_i+1;
        IF v_i >= 5 THEN
            LEAVE LOOP_LABEL;
        END IF;
    END LOOP;
END $$
DELIMITER ;

CALL pro12();

复制代码

复制代码

DROP PROCEDURE IF EXISTS `pro13`;
DELIMITER $$
CREATE PROCEDURE `pro13`()
BEGIN
    -- 定义变量
    DECLARE v_i int unsigned DEFAULT 0;
    LOOP_LABEL:LOOP
        IF v_i = 3 THEN
            SET v_i = v_i+1;
            ITERATE LOOP_LABEL; # => continue
        END IF;
        SELECT v_i;
        SET v_i = v_i+1;
        IF v_i >= 5 THEN
            LEAVE LOOP_LABEL; # => break;
        END IF;
    END LOOP;
END $$
DELIMITER ;

CALL pro13();

复制代码

本文来源huayang183,由架构君转载发布,观点不代表Java架构师必看的立场,转载请标明来源出处:https://javajgs.com/archives/18723

发表评论