记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的效果,收工。


相关文章
|
8月前
|
SQL Oracle 关系型数据库
Oracle之Fetch关键字的使用
Oracle之Fetch关键字的使用
317 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         ...
958 0
|
SQL 存储 Oracle
Oracle 数据泵参数及关键字释义
以下是数据泵可用关键字和它们的说明。方括号中列出的是默认值。 ATTACH 连接到现有作业。 例如, ATTACH=job_name。 CLUSTER 利用集群资源并将 worker 进程分布在 Oracle RAC 上。
1134 0
|
Oracle 关系型数据库
ORACLE中ESCAPE关键字用法
ESCAPE用法 1.使用 ESCAPE 关键字定义转义符:   在模式中,当转义符置于通配符之前时,该通配符就解释为普通字符。 2.ESCAPE 'escape_character'   允许在字符串中搜索通配符而不是将其作为通配符使用。
886 0
|
Oracle 关系型数据库
ORACLE的ESCAPE关键字
定义:escape关键字经常用于使某些特殊字符,如通配符:'%','_'转义为它们原来的字符的意义,被定义的转义字符通常使用'\',但是也可以使用其他的符号。 SQL&gt; select * from liuch where name like '%_%';   NAME   ---------   bb_b   bbb SQL&gt; select * from liuch
960 0
|
Oracle 关系型数据库
在oracle中使用having关键字来限制你的分组结果
前面我们介绍了,使用oracle的聚合函数和group by关键字来对结果集合进行分组,这时就有了一个新的问题,例如,我们针对聚合函数那一列需要找到满足条件的那些分组结果。我们可以使用where子句吗?不行,我们需要的是使用having关键字。
792 0
|
3月前
|
存储 Oracle 关系型数据库
Oracle数据库的应用场景有哪些?
【10月更文挑战第15天】Oracle数据库的应用场景有哪些?
229 64
|
29天前
|
存储 Oracle 关系型数据库
数据库数据恢复—ORACLE常见故障的数据恢复方案
Oracle数据库常见故障表现: 1、ORACLE数据库无法启动或无法正常工作。 2、ORACLE ASM存储破坏。 3、ORACLE数据文件丢失。 4、ORACLE数据文件部分损坏。 5、ORACLE DUMP文件损坏。
90 11

推荐镜像

更多