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

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

 2008-12-16 13:03:47 来源:WEB开发网   
核心提示: declaretrans_id number(10);beginselect myseq.nextvalinto trans_idfrom dual;end;现在不再需要这样了,您可以将序列的下一个值直接赋值给一个变量:declaretrans_id number(10);begintra

declare
trans_id number(10);
begin
select myseq.nextval
into trans_id
from dual;
end;

现在不再需要这样了。您可以将序列的下一个值直接赋值给一个变量:

  declare
trans_id number(10);
begin
trans_id := myseq.nextval;
end;
/

这就是我所说的简单性。

When OTHERS Then 执行某些操作

许多 PL/SQL 程序员都采用忽略 OTHERS 异常的危险做法,如下所示:

when OTHERS then
NULL;

这就好像说“当错误发生时,什么也不做;只要忽略或假装它从未发生过,它就不会再发生了。”如果世界有这么简单就好了!这个做法可能会导致漏洞百出、不稳定的代码。

Oracle 数据库 11g 在这方面很有帮助。它具有一个名为 PLW-06009 的新警告,可以在编译时向您警告此类问题。下面是一个例子。

create or replace procedure myproc as
l_dummy varchar2(1);
begin
select dummy
into l_dummy
from dual;
exception
when OTHERS then
null;
end;

在您编译该过程时,它编译良好,没有出现任何警告,就像以前使用 10g 时一样好。要启用这个警告,您必须设置该会话参数。

SQL> alter session set plsql_warnings = 'enable:all'
 2 /
Session altered.
SQL> @others1
SP2-0804:Procedure created with compilation warnings
SQL> show error
Errors for PROCEDURE MYPROC:
LINE/COL ERROR
-------- -----------------------------------------------------------------
8/7   PLW-06009:procedure "MYPROC" OTHERS handler does not end in
RAISE or RAISE_APPLICATION_ERROR

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

Tags:Oracle 数据库 特性

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