记oracle里continue关键字的陷阱

简介:

这几天在写pl/sql,中间用到continue关键字,一不小心就掉进坑里。
oracle版本是11g,贴sql:

造数据:

1

2

3

4

5

6

7

8

9

create table address(

addr varchar2(10)

);

insert into address values('a');

insert into address values('b');

insert into address values('c');

insert into address values('d');

commit;

遍历:

1

2

3

4

5

6

declare

begin

for i in 1..5 loop

dbms_output.put_line(i);

end loop;

end ;

打印结果:
1
2
3
4
5

1

2

3

4

5

6

declare

begin

for i in (select * from address) loop

dbms_output.put_line(i.addr);

end loop;

end;

打印结果:
a
b
c
d

使用continue:

1

2

3

4

5

6

7

8

9

declare

begin

for i in 1..5 loop

if i = 3 then

continue;

end if ;

dbms_output.put_line(i);

end loop;

end ;

打印结果:
1
2
4
5

惯性:

1

2

3

4

5

6

7

8

9

declare

begin

for i in (select * from address) loop

if i.addr = 'c'then

continue;

end if;

dbms_output.put_line(i.addr);

end loop;

end;

打印结果:
a
b
这里像break。

正确解法:

1

2

3

4

5

6

7

8

9

10

declare

begin

for i in (select * from address) loop

if i.addr = 'c'then

goto next_tag;

end if;

dbms_output.put_line(i.addr);

<<next_tag>> null;

end loop;

end;

打印结果:
a
b
d
打印出continue的效果,收工。


相关文章
|
SQL Oracle 关系型数据库
Oracle之Fetch关键字的使用
Oracle之Fetch关键字的使用
825 1
|
Oracle 关系型数据库 MySQL
mycat链接oracle报错 未找到from关键字
mycat链接oracle报错 未找到from关键字
mycat链接oracle报错 未找到from关键字
|
Oracle 关系型数据库 数据库
[20171218]字段命名与oracle关键字.txt
[20171218]字段命名与oracle关键字.txt --//再次提醒开发应该在数据库字段命令上避开oracle关键字(保留字).避免出现混乱. SCOTT@book> @ &r/ver1 PORT_STRING         ...
1119 0
|
SQL 存储 Oracle
Oracle 数据泵参数及关键字释义
以下是数据泵可用关键字和它们的说明。方括号中列出的是默认值。 ATTACH 连接到现有作业。 例如, ATTACH=job_name。 CLUSTER 利用集群资源并将 worker 进程分布在 Oracle RAC 上。
1358 0
|
Oracle 关系型数据库
ORACLE中ESCAPE关键字用法
ESCAPE用法 1.使用 ESCAPE 关键字定义转义符:   在模式中,当转义符置于通配符之前时,该通配符就解释为普通字符。 2.ESCAPE 'escape_character'   允许在字符串中搜索通配符而不是将其作为通配符使用。
1145 0
|
Oracle 关系型数据库
ORACLE的ESCAPE关键字
定义:escape关键字经常用于使某些特殊字符,如通配符:'%','_'转义为它们原来的字符的意义,被定义的转义字符通常使用'\',但是也可以使用其他的符号。 SQL&gt; select * from liuch where name like '%_%';   NAME   ---------   bb_b   bbb SQL&gt; select * from liuch
1257 0
|
Oracle 关系型数据库
在oracle中使用having关键字来限制你的分组结果
前面我们介绍了,使用oracle的聚合函数和group by关键字来对结果集合进行分组,这时就有了一个新的问题,例如,我们针对聚合函数那一列需要找到满足条件的那些分组结果。我们可以使用where子句吗?不行,我们需要的是使用having关键字。
959 0
|
Oracle 关系型数据库 Linux
【赵渝强老师】Oracle数据库配置助手:DBCA
Oracle数据库配置助手(DBCA)是用于创建和配置Oracle数据库的工具,支持图形界面和静默执行模式。本文介绍了使用DBCA在Linux环境下创建数据库的完整步骤,包括选择数据库操作类型、配置存储与网络选项、设置管理密码等,并提供了界面截图与视频讲解,帮助用户快速掌握数据库创建流程。
1065 93
|
Oracle 关系型数据库 Linux
【赵渝强老师】使用NetManager创建Oracle数据库的监听器
Oracle NetManager是数据库网络配置工具,用于创建监听器、配置服务命名与网络连接,支持多数据库共享监听,确保客户端与服务器通信顺畅。
582 0

推荐镜像

更多