-- while 计算从1累加到n的值,n为传入的参数
-- A 定义局部变量记录累加之后的值
-- B 每循环一次就会对n进行减1,如果n减到0就退出循环
create procedure p7(in n int)
begin
declare total int default 0;
while n>0 do
set total=total+n;
set n=n-1;
end while;
select total;
end;
call p7(10);
-- repeat 计算从1累加到n的值,n为传入的参数
-- A 定义局部变量记录累加之后的值
-- B 每循环一次就会对n进行减1,如果n减到0就退出循环
create procedure p8(in n int)
begin
declare total int default 0;
repeat -- (对于repeat循环,它会先循环一次,在判断是否该退出)
set total=total+n;
set n=n-1;
until n<=0
end repeat;
select total;
end;
call p8(11);
-- loop 计算从1累加到n的值,n为传入的参数值
-- A 定义局部变量记录累加之后的值
-- B 每循环一次就会对n进行减1,如果n减到0就退出循环(退出是没有条件的,必须借用leave xx)
create procedure p9(in n int)
begin
declare total int default 0;
sum:loop -- 定义loop循环并且给loop循环取别名sum
if n<=0 then
leave sum;
end if;
set total=total+n;
set n=n-1;
end loop sum;
select total;
end;
call p9(100);
-- loop 计算从1到n之间的偶数累加的值,n为传入的参数值
-- A 定义局部变量记录累加之后的值
-- B 每循环一次就会对n进行减1,如果n减到0就退出循环(退出是没有条件的,必须借用leave xx)
-- C 如果当次累加的数据是奇数,则直接进入下一次循环 ------iterate xx跳过当次循环后面的SQL语句,进入下一次循环
create procedure p10(in n int)
begin
declare total int default 0;
sum:loop -- 定义loop循环并且给loop循环取别名sum
if n<=0 then
leave sum;
end if;
if n%2=1 then -- 说明是奇数
set n=n-1; -- 再跳到下一次循环前减n先减1
iterate sum;-- 跳出当前循环sum
end if;
set total=total+n;
set n=n-1;
end loop sum;
select total;
end;
call p9(14);
偶数累加