oracle的exit、return、continue


1.先看exit和return
將exit 或是 return 用在loop 。。。。end loop;中都可以中斷循環,但是它們有一個很明顯的不同
看下面兩個例子:
例一:

create or replace package body cux_test is

procedure main is
l_count number;
l_test number:=6;
begin
dbms_output.put_line('開始循環');
for l_count in 1..10 loop
if l_test=l_count then
dbms_output.put_line('滿足條件,退出循環');
return;
else
dbms_output.put_line('繼續循環');
end if;
end loop;
dbms_output.put_line('結束程序');
end ;
end cux_test;

例二:

create or replace package body cux_test is

procedure main is
l_count number;
l_test number:=6;
begin
dbms_output.put_line('開始循環');
for l_count in 1..10 loop
if l_test=l_count then
dbms_output.put_line('滿足條件,退出循環');
exit;--exit when x>=8;可以加條件
else
dbms_output.put_line('繼續循環');
end if;
end loop;
dbms_output.put_line('結束程序');
end ;
end cux_test;

下面來看以上兩個例子的執行結果:

例一:
開始循環
繼續循環
繼續循環
繼續循環
繼續循環
繼續循環
滿足條件,退出循環

例二:
開始循環
繼續循環
繼續循環
繼續循環
繼續循環
繼續循環
滿足條件,退出循環
結束程序

以上的例子說明了一個問題,exit只是單純的結束循環,但還會繼續執行程序包中其他的內容,而return則是直接中斷整個程序。

2.continue的作用是終止本次循環,開始下一次循環,它不是跳出循環。
而oracle數據庫之前卻一直沒有支持continue語法,直到oracle11g加入了continue語法,
其功能也是終止本次循環,開始下一次循環,exit語法的作用是跳出並結束循環。

begin
  for i in 1 .. 20
  loop
    if i < 10 then
      continue;
    end if;
    dbms_output.put_line(i);
  end loop;
end;

結果:

10
11
12
13
14
15
16
17
18
19
20

當i等於1到9的時候,程序運行到continue,使得當前循環停止,開始下一次循環,當i等於10的時候,不會執行到continue,所以從10開始輸出。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM