这几个循环语句的格式如下:
WHILE…[条件]…DO…[语句]…END WHILE
REPEAT…[语句]…UNTIL …[条件]… END REPEAT
[loop_label]:LOOP
…[语句]…
[条件] then leave [loop_label];
END LOOP
使用 while 循环:
delimiter $$ //定义结束符为 $$
drop procedure if exists wk; //删除 已有的 存储过程
create procedure wk() //创建新的存储过程
begin
declare i,a int; //变量声明
set i=1;
set a=2089;
while i < 1000 do //循环体
INSERT into user_profile (sex,nick,password)
values (1,concat('我去',a),'123456');
set i = i+1;
set a = a+1;
end while;
end $$ //结束定义语句
//调用
delimiter; //先把结束符 回复为;
call wk();
delimter : mysql 默认的 delimiter是; 告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了。
这里使用 delimiter 重定义结束符的作用是: 不让存储过程中的语句在定义的时候输出。
创建 MySQL 存储过程的简单语法为:
CREATE PROCEDURE 存储过程名称( [in | out | inout] 参数 )
BEGIN
Mysql 语句
END
调用存储过程:
call 存储过程名称() // 名称后面要加()
连接字符
concat('我去',a)
REPEAT…[语句]…UNTIL …[条件]… END REPEAT
delimiter $$
drop procedure if exists rwk;
create procedure rwk()
begin
declare i,a int;
set i=1;
set a=2089;
repeat
INSERT into user_profile (sex,nick,password)
values (1,concat('我去',a),'<span style="font-family: Arial, Helvetica, sans-serif;">123456</span><span style="font-family: Arial, Helvetica, sans-serif;">');</span>
set i = i+1;
set a = a+1;
until i > 10
end repeat;
end $$
delimiter;
call rwk();
[循环体名称]:LOOP
…[语句]…
[条件] then leave [循环体名称];
END LOOP
delimiter $$
drop procedure if exists lwk;
create procedure lwk()
begin
declare i,a int;
set i=1;
set a=2089;
loop_label:LOOP
INSERT into user_profile (sex,nick,password)
values (1,concat('我去',a),'123456');
set i = i+1;
set a = a+1;
if i > 10 then leave loop_label; end if;
end LOOP;
end $$
delimiter;
call lwk();