博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

如何区别存储过程中的EXIT与RUTURN

Posted on 2013-06-05 10:46  徐正柱-  阅读(3307)  评论(0编辑  收藏  举报

第一步:测试存储过程中使用EXIT

create or replace procedure P_TEST_RETURN_EXIT is

i number:=1;
j number:=1;
begin

for i in 1..20 loop

dbms_output.put_line('输出数据='||i);
if (i>10) then
EXIT;
end if;

end loop;


for j in 1..20 loop

dbms_output.put_line('输出数据='||j);
end loop;


end P_TEST_RETURN_EXIT;

测试结果:

输出数据=1
输出数据=2
输出数据=3
输出数据=4
输出数据=5
输出数据=6
输出数据=7
输出数据=8
输出数据=9
输出数据=10
输出数据=11
输出数据=1
输出数据=2
输出数据=3
输出数据=4
输出数据=5
输出数据=6
输出数据=7
输出数据=8
输出数据=9
输出数据=10
输出数据=11
输出数据=12
输出数据=13
输出数据=14
输出数据=15
输出数据=16
输出数据=17
输出数据=18
输出数据=19
输出数据=20

 

 

第二步:测试存储过程中使用RETURN

create or replace procedure P_TEST_RETURN_EXIT is

i number:=1;
j number:=1;
begin

for i in 1..20 loop

dbms_output.put_line('输出数据='||i);
if (i>10) then
RETURN;
end if;

end loop;


for j in 1..20 loop

dbms_output.put_line('输出数据='||j);
end loop;


end P_TEST_RETURN_EXIT;

测试结果:

输出数据=1
输出数据=2
输出数据=3
输出数据=4
输出数据=5
输出数据=6
输出数据=7
输出数据=8
输出数据=9
输出数据=10
输出数据=11

 

结论:

存储过程的循环中EXIT退出本次循环程序块,但会继续执行存储过程的其它程序块。

 

存储过程的循环中RETURN退出本次循环程序块,同时退出整个存储过程,其它程序块不会执行。