有时候需要知道oracle的error code的具体含义, 但总是找不全
不过可以通过以下方式直接从oracle数据库本身获得:
create type t_oracle_error is object (
error_num varchar2(9),
error_desc varchar2(1024)
);
create type t_oracle_error_tab is table of t_oracle_error;
create or replace function OracleErrors return t_oracle_error_tab pipelined is
l_error t_oracle_error := t_oracle_error(null,null);
begin
for errNo in reverse -32799..0 loop
l_error.error_num := errNo;
l_error.error_desc := sqlerrm(errNo);
if l_error.error_desc not like '%Message % not found;%' and l_error.error_desc != 'ORA'||to_char(errNo,'FM09999')||': ' then
pipe row(l_error);
end if;
end loop;
return;
end OracleErrors;
select * from table(oracleerrors);
不过可以通过以下方式直接从oracle数据库本身获得:
create type t_oracle_error is object (
error_num varchar2(9),
error_desc varchar2(1024)
);
create type t_oracle_error_tab is table of t_oracle_error;
create or replace function OracleErrors return t_oracle_error_tab pipelined is
l_error t_oracle_error := t_oracle_error(null,null);
begin
for errNo in reverse -32799..0 loop
l_error.error_num := errNo;
l_error.error_desc := sqlerrm(errNo);
if l_error.error_desc not like '%Message % not found;%' and l_error.error_desc != 'ORA'||to_char(errNo,'FM09999')||': ' then
pipe row(l_error);
end if;
end loop;
return;
end OracleErrors;
select * from table(oracleerrors);
本文介绍了一种通过PL/SQL函数从Oracle数据库内部直接获取错误代码及其描述的方法。使用定义的类型和函数,可以方便地查询-32799到0之间的所有有效Oracle错误信息。
2823

被折叠的 条评论
为什么被折叠?



