在PL/SQL中循环中使用RETURN和EXIT时应小心留意,它们表示 退出 含义有差异的,RETURN表示退出整个存储过程,也就是存储过程执行到此处结束执行,程序退出;而EXIT则表示退出当前循环,继续向下执行,如果是有两层循环的话,EXIT则是退出内层循环,外层循环继续执行。
例子:
--RETURN示例
begin
for j in 1..3 loop
dbms_output.put_line('外层循环 '||j);
for i in 1..10 loop
if i not in (1,2,3) then
return;
end if;
dbms_output.put_line('内层循环 '||i);
end loop;
end loop;
end;
--输出
外层循环 1
内层循环 1
内层循环 2
内层循环 3
--EXIT示例
begin
for j in 1..3 loop
dbms_output.put_line('外层循环 '||j);
for i in 1..10 loop
if i not in (1,2,3) then
exit;
end if;
dbms_output.put_line('内层循环 '||i);
end loop;
end loop;
end;
--输出
外层循环 1
内层循环 1
内层循环 2
内层循环 3
外层循环 2
内层循环 1
内层循环 2
内层循环 3
外层循环 3
内层循环 1
内层循环 2
内层循环 3
注:可以利用EXIT来模拟C语言中的CONTINUE操作
FOR ... LOOP ------- 原来的主循环
FOR I IN 1..1 LOOP ------ 只有一次的假循环
....... 代码 ......
EXIT; ------- 这个EXIT相当于CONTINUE原来的主循环
...... 代码 ........
END LOOP; ------- 假循环结束
END LOOP;