一:循环
1:while
1.1:语法
while循环是有条件的循环控制语句。满足条件后,再执行循环体中的SQL语句。具体语法:
#先判定条件,如果条件为true,则执行逻辑,否则,不执行逻辑
WHILE 条件 DO
SQL逻辑。。。
END WHILE;
1.2: 练习
1:计算从1累加到n的值,n为传入的参数值;
sql
-- while 计算从1累加到n的值,n为传入的参数值
--A:定义局部变量,记录累加之后的值;
--B:退出条件,就会对n进行减1,如果n减到0,则退出循环;每次循环递减是否大于0,大于0继续循环,小于等于0退出循环
use mydb2
--1:指定传入的参数
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);
---
2:Repeat循环
repeat是有条件的循环控制语句,当满足条件的时候退出循环。具体语法为:
#先执行一次逻辑,然后判定逻辑是否满足,如果满足,则退出。如果不满足,则继续下一次循环
REPEAT
SQL逻辑。。。
UNTIL条件
END REPEAT;
sql
create procedure p8(in m int)
begin
declare total int default 0;
repeat
set total = total + m;
set m := m-1;
until m <= 0
end repeat;
select total;
end;
call P8(10)
3:LOOP循环

sql
--- 1:计算从1累加到n的值,n为传入的参数值
create procedure p8(in n int)
begin
declare total int default 0;
sum:loop
--退出循环条件
if n <= 0 then
leave sum;
end if;
set total := total + n;
set n := n -1;
end loop sum;
select total;
end;
call p8(10)
sql
---2: 计算从1到n之间的偶数累加的值,n为传入的参数
-- a:定义局部变量,记录累加之和的值;
-- b:每循环一次,就会对n进行-1,如果n减到0,则退出循环 ---》leave xx
-- c:如果当次累加的数据是奇数,则直接进入下一次循环 ---> iterate xx
create procedure p9(in m int)
begin
declare total int default 0;
sum loop
if m <= 0 then
leave sum;
end if;
if m%2=1 then
set m := n -1;
iterate sum;
end if;
set total := total + m;
set m := m -1
end loop sum;
select total;
end;
call p9(10)