没有暴露的拒绝计数器。
DML错误记录的主要目的是支持ETL进程。它允许我们加载大量的数据,而不会出现一些错误,从而强制整个加载回滚。我想基本的理由是,在我们针对该表发出更多DML之前,错误将被手动解决:它实际上并不打算提供一个永久的错误日志。
但是,如果给每个DML语句一个唯一的标记,就可以计算它产生的拒绝的确切数量。
declare
l_tag varchar2(46);
reject_cnt pls_integer;
begin
....
l_tag := 'merging from source_table::'||to_char(sysdate, 'yyyymmddhh24miss');
merge into target_table a
using source_table b
on (a.id = b.id)
....
log errors into err$_target_table (l_tag) reject limit 10;
select count(*)
into reject_cnt
from err$_target_table
where ora_err_tag$ = l_tag;
....