Mysql 循环结构 while、loop、repeat的使用
分类:while、loop、repeat
循环控制:
iterate:类似于continue,继续,结束本次循环,继续等下一次
legel:类似于break 跳出,结束当前所有的循环
1、while
语法:
while 循环条件 do
循环体;
end while 标签;
2、loop
语法:
标签 loop
循环体;
end loop 标签;
可以用来模拟简单的死循环
3、repeat
语法:
标签 repeat
循环体;
until 结束循环的条件
end repeat ;
1、while的使用
案例1:批量插入,根据次数插入到admin表中多条记录
DELIMITER $
CREATE PROCEDURE pro_while(in insertCount int)
BEGIN
declare i int default 1;
while i<=insertCount do
insert into admin(username,`password`) values(concat('test',i),'123456');
set i=i+1;
end while;
END $
DELIMITER ;
调用:call pro_while(20);
2、while leave使用(类似于break)
案例2:批量插入,根据次数插入到admin中,如果次数>20次,测停止
DELIMITER $
CREATE PROCEDURE pro_while2(IN insertCount INT)
BEGIN
DECLARE i INT DEFAULT 1;
a:WHILE i<insertCount DO
INSERT into admin(username,`password`) VALUE (concat('test1',i),'234343');
IF i>=20 THEN LEAVE a;
END IF; #使用了if需要结尾
SET i=i+1;
END WHILE a; #使用了while 需要结尾
END $
DELIMITER ;
调用:call pro_while2(204);
3、while iterate(相当于continue)
DELIMITER $
CREATE PROCEDURE pro_whileIterate(IN insertCount INT)
BEGIN
DECLARE i INT DEFAULT 0;
a:WHILE i<insertCount DO
SET i=i+1;
-- if i%2==0 THEN iterate a;
IF MOD(i,2)!=0 THEN ITERATE a;
END IF;
INSERT INTO admin(username,`password`) values (concat('test1',i),'234343');
END WHILE a;
END $
DELIMITER ;
调用:call pro_whileIterate(100);