PL SQL 处理触发器错误



我有数千行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来使用独特的约束来执行此操作,但这不适用于上述触发错误。

您可以定义自己的异常并使用它,就像使用默认异常处理程序之一(如 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;

不过,一般来说,修改脚本更有意义,以便它们只尝试插入尚不存在的行,而不是让触发器尝试标记它们然后忽略错误。

最新更新