本文总结了mysql常见的三种循环方式:while、repeat和loop循环。还有一种goto,不推荐使用。
一、while循环
循环语句:while 条件 do 循环体 end while
delimiter // #定义标识符为双斜杠
drop procedure if exists test; #如果存在test存储过程则删除
create procedure test() #创建无参存储过程,名称为test
begin
declare i int; #申明变量
set i = 0; #变量赋值
WHILE i < 10 DO #结束循环的条件: 当i大于10时跳出while循环
insert into test values (i); #往test表添加数据
set i = i + 1; #循环一次,i加一
END WHILE; #结束while循环
select * from test; #查看test表数据
end
// #结束定义语句
call test(); #调用存储过程
二、repeat循环
循环语句:repeat 循环体 until 条件 end repeat
delimiter // #定义标识符为双斜杠
drop procedure if exists test; #如果存在test存储过程则删除
create procedure test() #创建无参存储过程,名称为test
begin
declare i int; #申明变量
set i = 0; #变量赋值
REPEAT
insert into test values (i); #往test表添加数据
set i = i + 1; #循环一次,i加一
UNTIL i > 10 END REPEAT; #结束循环的条件: 当i大于10时跳出repeat循环
select * from test; #查看test表数据
end
// #结束定义语句
call test(); #调用存储过程
三、loop循环
循环语句:loop 循环体(需有leave loop语句且能执行到) end loop
delimiter // #定义标识符为双斜杠
drop procedure if exists test; #如果存在test存储过程则删除
create procedure test() #创建无参存储过程,名称为test
begin
declare i int; #申明变量
set i = 0; #变量赋值
lp : LOOP #lp为循环体名,可随意 loop为关键字
insert into test values (i); #往test表添加数据
set i = i + 1; #循环一次,i加一
if i > 10 then #结束循环的条件: 当i大于10时跳出loop循环
LEAVE lp;
end if;
END LOOP;
select * from test; #查看test表数据
end
// #结束定义语句
call test();