【发布时间】:2009-12-18 13:29:07
【问题描述】:
您好,有什么方法可以捕获ORACLE中抛出异常的对象(例如表和列)?
我需要确定对象名称以自定义错误消息,向用户显示发生异常的表和字段的名称。
我知道有一个变量 SQLCODE 和 SQLERRM,但我想知道是否有任何其他变量或函数可以返回错误对象的名称。
我想要这样的东西
exception
when others then
begin
if SQLCODE = -20010
then dbms_output.put_line('The Value Too Large in the field ' || GetObjectNameError);
end if;
end;
更新
使用托尼的例子
CREATE TABLE t (v varchar2(3));
COMMENT ON TABLE t IS 'my table description';
COMMENT ON COLUMN t.v IS 'my column description';
insert into t values ('xxxx');
其实引发这个错误*
ERROR at line 1:
ORA-12899: value too large for column "MYSCHEMA"."T"."V" (actual: 4, maximum: 3)
我想展示这样的东西
ORA-12899: value too large for column "my column description" in table "my table description" (actual: 4, maximum: 3)
提前致谢。
【问题讨论】:
-
你真的不希望以这种方式捕获 WHEN OTHERS:调用你的代码的程序将不知道它是成功还是失败。
-
请详细说明您想要达到的目标。具体来说,您能否解释一下为什么 Tony 的解决方案不符合要求。