-- 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);



偶数累加

文章展示了如何在MySQL中使用不同的循环结构(while、repeat、loop)来实现从1累加到给定数n的值。同时,还提供了一个特例,即只累加偶数的存储过程,其中用到了迭代和条件判断。
1065

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



