分类:while loop repeat
循环控制:
iterate类似于continue,继续,结束本次循环,继续下一次
leave类似于break,跳出,结束当前所在的循环
while
语法:
[标签:]while循环条件 do
循环体;
end while [标签];
loop
语法:
[标签:]loop
循环体
end loop [标签];
可以用来模拟简单的死循环
repeat
语法:
[标签:]repeat
循环体;
until 结束循环的条件
end repeat [标签];
批量插入,根据次数插入到admin表中多条记录(没有添加循环控制语句)
CREATE PROCEDURE pro_while1(insertCount INT)
BEGIN
DECLARE i INT default 1;
WHILE i<=insertCount DO
INSERT INTO admin(username,'password') values (concat('Rose',i),666);
SET i=i+1;
END WHILE;
END $
添加leave语句
批量插入,根据次数依次插入到admin表中多条记录,如果次数>20则停止
TRUNCATE TABLE admin$
DROP PROCEDURE test_while1(IN insertCOUNT INT)$
BEGIN
DECLARE i INT DEFAULT 1;
a:WHILE i<=insertCount DO
insert into admin(username,'password') values (concat('xiaohua',i)+'0000');
IF i>=20 THEN LEAVE a;
END IF;
SET i=i+1;
END WHILE a;
END $
CALL test_while1(100)$
添加iterate语句
批量插入,根据次数依次插入到admin表中多条记录,只插入偶数次
TRUNCATE TABLE admin$
DROP PROCEDURE test_while1(IN insertCOUNT INT)$
BEGIN
DECLARE i INT DEFAULT 0;
a:WHILE i<=insertCount DO
SET i=i+1;
IF MOD(i,2)!=0 THEN ITERATE a;
END IF;
insert into admin(username,'password') values (concat('xiaohua',i)+'0000');
END WHILE a;
END $
CALL test_while1(100)$
已知表stringcontent
其中字段:id 自增长 content varchar(20)
向该表插入指定个数的,随机的字符串
DROP TABLE IF EXISTS STRINGCONTENT
CREATE TABLE stringcontent(
id INT PRIMARY KEY AUTO_INCREMENT,
content VARCHAR(20)
);
DELIMITER $
CREATE PROCEDURE test_randstr_insert(IN insertCount INT)
BEGIN
DECLARE i INT DEFAULT 1; #定义一个循环变量i,表示插入次数
DECLARE str VARCHAR(26) DEFAULT 'abcdefghijklmnopqrstuvwxyz';
DECLARE startIndex INT DEFAULT 1; #代表起始索引
DECLARE len INT DEFAULT 1; #代表截取的字符串的长度
WHILE i<=insertCount DO
SET len=FLOOR(RAND()*(20-startIndex+1)+1)#产生一个随机的整数,代表截取长度,1-(26-startIndex+1)
SET startIndex=FLOOR(RAND()*26+1);#产生一个随机的整数,代表起始索引1-26
INSERT INTO stringcontent(content) VALUES(SUBSTR(str,startIndex,len));
SET i=i+1; #循环变量更新
END WHILE;
END
本文深入探讨了SQL中的循环结构,包括while、loop和repeat,并通过实例展示了如何使用这些循环进行批量数据插入,特别关注循环控制语句如leave和iterate的应用。同时,介绍了生成随机字符串并批量插入特定表的方法。
793

被折叠的 条评论
为什么被折叠?



