是否所有Oracle例外都已命名?

时间:2013-10-23 15:49:57

标签: oracle exception plsql

特别是,我一直试图找到ORA-0955的名称来提高代码的可读性。

目前我正在使用以下内容:

EXCEPTION
  WHEN OTHERS THEN
    IF SQLCODE = -00955

我更喜欢的是:

EXCEPTION
  WHEN OBJECT_EXISTS THEN

这对我来说似乎更干净,我更喜欢这样。但我查看了SYS.STANDARD,它列出了相对较少的命名异常。在线文档似乎反映了SYS.STANDARD中的内容。还有其他包可以查看吗?其他一些资源?

1 个答案:

答案 0 :(得分:6)

不,并非所有Oracle例外都有预定义的名称。 exception_init pragma可用于将名称与异常代码相关联:

create table tb_1(
  col number
);

set serveroutput on;

declare
  not_unique_object_name exception;
  pragma exception_init(not_unique_object_name, -955);
begin
  execute immediate 'create table tb_1(col number)';
exception
  when not_unique_object_name then
     dbms_output.put_line('Not unique object name');
end;

anonymous block completed
Not unique object name

Find out有关exception_init pragma的更多信息。