第一步:测试存储过程中使用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退出本次循环程序块,同时退出整个存储过程,其它程序块不会执行。