WEB开发网
开发学院数据库Oracle Oracle数据库11g新特性:高效的PL/SQL编码 阅读

Oracle数据库11g新特性:高效的PL/SQL编码

 2008-12-16 13:03:47 来源:WEB开发网   
核心提示: beginfor ctr in 1..100 loopcontinue when mod(ctr,10) != 0;dbms_output.put_line ('ctr='||ctr);end loop;end;/输出如下:ctr=10ctr=20ctr=30... and

  begin
for ctr in 1..100 loop
continue when mod(ctr,10) != 0;
dbms_output.put_line ('ctr='||ctr);
end loop;
end;
/

输出如下:

ctr=10
ctr=20
ctr=30
... and so on ...

CONTINUE 的另一个变体是使用循环名称。

  begin
<<OuterLoop>>
for outer in 1..10 loop
dbms_output.put_line ('-> outer='||outer);
for inner in 1..10 loop
continue OuterLoop when mod(inner,3) = 0;
dbms_output.put_line ('..-> inner='||inner);
end loop;
end loop;
end;
/

输出如下:

-> outer=1
..-> inner=1
..-> inner=2
-> outer=2
..-> inner=1
..-> inner=2
-> outer=3
..-> inner=1
..-> inner=2
... and so on ...

如果不使用静态结构,如 mod(inner,3),您还可以使用执行某种计算的函数。

  begin
<<OuterLoop>>
for outer in 1..10 loop
dbms_output.put_line ('-> outer='||outer);
for inner in 1..10 loop
continue OuterLoop when (myfunc = 1);
dbms_output.put_line ('..-> inner='||inner);
end loop;
end loop;
end;
/

勿庸置疑,您只能在循环内(它只有在这里才有意义)使用这个结构。如果您尝试在循环外使用它,将出现编译器错误。

井井有条的序列

以前,如果您需要在 PL/SQL 程序中使用序列,则在该版本推出之前,您需要使用 SELECT <Seq>.NEXTVAL INTO <VariableName> FROM DUAL 之类的结构。

上一页  2 3 4 5 6 7 8 9 10  下一页

Tags:Oracle 数据库 特性

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接