zhouzangood

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开始输出。

分类:

技术点:

相关文章:

  • 2021-11-18
  • 2022-12-23
  • 2022-12-23
  • 2021-08-02
  • 2022-12-23
  • 2021-04-07
猜你喜欢
  • 2021-06-08
  • 2022-12-23
  • 2021-09-21
  • 2021-12-06
  • 2022-12-23
  • 2021-11-02
相关资源
相似解决方案