MySQL 的 while 循环
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);