学而实习之 不亦乐乎

MySQL 的 while 循环

2023-10-27 07:47:32

MySQL 实现 while 循环,一般使用自带的 procedure 来实现,方便简洁。如下:

DELIMITER $$
CREATE PROCEDURE pro_insert(IN maxNum INT)
BEGIN
    DECLARE i INT DEFAULT(1);   

    while i<=maxNum DO
        INSERT INTO employees (first_name ,last_name) VALUES ("z",CONCAT("sc",i));
        SET i=i+1;
        END WHILE;
END $$
DELIMITER ;


CALL pro_insert(20);

说明:

delimiter $$ 将命令结束符从; 改成$$,必须做这个修改,这样在后续的代码中看到;之后,mysql不会立即执行;注意这个命令在mycli不支持!

create procedure pro_insert() 定义一个新的 procedure

declare i int; 定义变量

set i = 608000; 变量赋值

while i < 620000 DO 是一个循环结构,后续跟执行的命令

end while; 结束while循环体

delimiter ; 将$$改回;

call pro_insert(); 执行 pro_insert 

注意:有些较新版本可能移除了 delimiter,如在 mysql 5.7 的 SQL 代码块中实现循环,流程控制语句会报错-You have an error in your SQL syntax ... to your MySQL server version for the right syntax to usenear 'delimiter ...

修改 SQL 语句,则可以正常执行,SQL语句如下:

DROP PROCEDURE IF EXISTS pro_insert;
CREATE PROCEDURE pro_insert(IN maxNum INT)
BEGIN
    DECLARE i INT DEFAULT(1);

    while i<=maxNum DO
        -- INSERT INTO employees (first_name ,last_name) VALUES ("z",CONCAT("sc",i));
        SET i=i+1;
        PRINT @i;
        END WHILE;
END ;

CALL pro_insert(20);