函数、预存中遇到return就会中断整个函数、预存,return后的代码不会再执行!
exit是退出整个for循环,即结束该for循环,不执行该for循环了!
continue是退出该for循环的当前这一次,开始下一次,直到该for循环结束!
以下2个代码块都是印证return 的作用。代码块一没加“if··· then end if;”代码块,而代码块二加上了“if··· then end if;”代码块,两者的运行结果都是·一样的。
-----代码块一:
begin--一定要加上begin end;因為oracle是代碼塊~~~
for ii in 1..5 loop
sys.dbms_output.put_line(‘此處是return‘);
return;
sys.dbms_output.put_line(‘處於return後、當前循環里的代碼不執行!‘);
end loop;
sys.dbms_output.put_line(‘處於return後、非循環里的代碼不執行!!‘);
end;
------------------------------------------------
-----代码块二:
begin
for i in 1..5 loop
if i=2 then
sys.dbms_output.put_line(‘此處是return‘);
return;
sys.dbms_output.put_line(‘處於return後、當前循環里的代碼不執行!‘);
end if;
end loop;
sys.dbms_output.put_line(‘處於return後、非循環里的代碼不執行!!‘);
end;
以上代码块一、代码块二的运行结果都是·一样的:
所以,函数、预存中遇到return就会中断整个函数、预存,return后的代码不会再执行!
以下2个代码块都是印证exit 的作用。代码块一没加“if··· then end if;”代码块,而代码块二加上了“if··· then end if;”代码块,两者的运行结果都是·一样的。
--代码块一:
begin
for j in 1..5 loop
sys.dbms_output.put_line(‘此處是exit‘);
exit;
sys.dbms_output.put_line(‘處於exit後、當前循環里的代碼不執行!‘);
end loop;
sys.dbms_output.put_line(‘處於exit後、非循環里的代碼也執行了~~‘);
end;
---------------------------------------------
--代码块二:
begin
for j in 1..5 loop
if j=2 then
sys.dbms_output.put_line(‘此處是exit‘);
exit;
sys.dbms_output.put_line(‘處於exit後、當前循環里的代碼不執行!‘);
end if;
end loop;
sys.dbms_output.put_line(‘處於exit後、非循環里的代碼也執行了~~‘);
end;
以上代码块一、代码块二的运行结果都是·一样的:
所以,exit是退出整个for循环,即结束该for循环,不执行该for循环了!
以下2个代码块都是印证continue 的作用。代码块一没加“if··· then end if;”代码块,而代码块二加上了“if··· then end if;”代码块,两者的运行结果是不一样的:
--代码块一
begin
for k in 1..5 loop
sys.dbms_output.put_line(‘此處是continue‘);
continue;
sys.dbms_output.put_line(‘處於continue後、當前循環里的代碼不執行!‘);
end loop;
sys.dbms_output.put_line(‘處於continue後、非循環里的代碼也執行了~~~~~‘);
end;
--代码块二
begin
for k in 1..5 loop
if k=3 then
sys.dbms_output.put_line(‘此處是continue‘);
continue;
sys.dbms_output.put_line(‘處於continue後、當前循環里的代碼不執行!!‘);
end if;
end loop;
sys.dbms_output.put_line(‘處於continue後、非循環里的代碼也執行了~~~~~‘);
end;
代码块一的结果:
代码块二的结果:
所以,continue是退出该for循环的当前这一次,开始下一次,直到该for循环结束!