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