1 概述
1. 循环的三种方式
(1) for : 常用,'起始范围'
(2) while : '起始范围' 其中之一
(3) loop : '先执行一条语句',再判断是否满足循环条件
2. 退出循环的三种方式
(1) continue: 退出 '本次循环',直接进入下一循环
(2) exit : 退出 '当前循环体'
(3) return : 退出 '程序'(存储过程、方法、匿名块 declare)
2 循环的三种方式
2.1 for 循环
--*************************
-- 功能: 循环输出 1 ~ 3
--*************************
declare
i integer;
begin
for i in 1 .. 3 loop
dbms_output.put_line(i);
end loop;
end;
输出结果:
1
2
3
2.2 while 循环
--*************************
-- 功能: 循环输出 1 ~ 3
--*************************
declare
i integer := 1;
begin
while (i <= 3) loop
dbms_output.put_line(i);
-- 退出条件
--建议:写 while 循环的同时,写退出条件,避免因忘记写而进入 '死循环'
i := i + 1;
end loop;
end;
2.3 loop 循环
--*************************
-- 功能: 循环输出 1 ~ 3
--*************************
declare
i integer := 3;
begin
loop
-- 先执行一条语句
dbms_output.put_line('i: ' || i);
exit when i = 0; -- 退出条件
dbms_output.put_line(i);
-- 退出条件逻辑
i := i - 1;
end loop;
end;
输出结果:
i: 3
3
i: 2
2
i: 1
1
i: 0
3 退出循环的三种方式
3.1 continue
-- 退出 '本次循环',直接进入下一循环
declare
i integer := 1;
begin
for i in 1 .. 3 loop
if i = 2 then
continue;
dbms_output.put_line('我不会被执行!');
end if;
dbms_output.put_line(i);
end loop;
end;
输出结果:
1
3
3.2 exit
-- 退出 '当前循环体',如:for 循环
declare
i integer;
begin
for i in 1 .. 3 loop
for j in 1 .. 2 loop
if j = 1 then
exit;
end if;
dbms_output.put_line('我不会被执行!');
end loop;
dbms_output.put_line('i = ' || i);
end loop;
end;
输出结果:
i = 1
i = 2
i = 3
3.3 return
-- 直接退出程序(过程、方法、匿名块)
declare
i integer;
begin
for i in 1 .. 3 loop
for j in 1 .. 2 loop
if j = 1 then
return;
end if;
dbms_output.put_line('我不会被执行!');
end loop;
dbms_output.put_line('我也不会被执行!');
end loop;
dbms_output.put_line('我还是不会被执行!');
end;
输出结果:(啥都没有)