Oracle数据库11g新特性:高效的PL/SQL编码
2008-12-16 13:03:47 来源:WEB开发网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
- ››oracle 中 UPDATE nowait 的使用方法
- ››Oracle ORA-12560解决方法
- ››Oracle 10g RAC 常用维护命令
- ››Oracle如何在ASM中定位文件的分布
- ››Oracle的DBMS_RANDOM.STRING 的用法
- ››oracle 外部表导入时间日期类型数据,多字段导入
- ››Oracle中查找重复记录
- ››oracle修改用户登录密码
- ››Oracle创建删除用户、角色、表空间、导入导出等命...
- ››Oracle中登陆时报ORA-28000: the account is lock...
- ››Oracle数据库在配置文件中更改最大连接数
- ››Oracle中在pl/sql developer修改表的两种方式
更多精彩
赞助商链接