我有数千个sql INSERT INTO
行的脚本文件。其中一些行将插入已存在于数据库中的数据,因此我想捕获这些错误并绕过它。有没有办法捕获触发器抛出的错误并忽略它?
ERROR at line 1:
ORA-20053: Username must be unique
ORA-06512: at "MY_TRIGGER", line 18
ORA-04088: error during execution of trigger 'MY_TRIGGER'
ORA-06512: at line 3
我可以通过捕获DUP_VAL_ON_INDEX
然后执行NULL
来解决此问题,但这不适用于上述触发错误。
答案 0 :(得分:1)
您可以定义自己的异常并使用它,就像使用dup_val_on_index
之类的默认异常处理程序一样。
DECLARE
l_unique_username_ex exception;
pragma exception_init( l_unique_username_ex, -20053 );
BEGIN
<<your INSERT statement>>
EXCEPTION
WHEN l_unique_username_ex
THEN
NULL; -- Ignore the error
END;
一般而言,修改脚本会更有意义,因为它们只会尝试插入尚不存在的行,而不是让触发器尝试标记它们,然后忽略错误。