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

Joh*_*n O 1 oracle plsql exception

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

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

EXCEPTION
  WHEN OTHERS THEN
    IF SQLCODE = -00955
Run Code Online (Sandbox Code Playgroud)

我更喜欢的是:

EXCEPTION
  WHEN OBJECT_EXISTS THEN
Run Code Online (Sandbox Code Playgroud)

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

Nic*_*nov 6

不,并非所有Oracle异常都具有预定义的名称.该exception_initpragma可用于将名称与异常代码相关联:

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
Run Code Online (Sandbox Code Playgroud)

了解有关exception_initpragma的更多信息.