这几天在写pl/sql,中间用到continue关键字,一不小心就掉进坑里。
oracle版本是11g,贴sql:
造数据:
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;
遍历:
declare
begin
for i in 1..5 loop
dbms_output.put_line(i);
end loop;
end ;
打印结果:
1
2
3
4
5
declare
begin
for i in (select * from address) loop
dbms_output.put_line(i.addr);
end loop;
end;
打印结果:
a
b
c
d
使用continue:
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
惯性:
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。
正确解法:
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);
<> null;
end loop;
end;
打印结果:
a
b
d
打印出continue的效果,收工。