插入失败时如何在Oracle错误日志表中捕获列值?

时间:2018-07-26 08:30:37

标签: oracle oracle12c error-logging

我正在一个项目中,我们在其中备份清除的记录并将其从主表中删除。此过程涉及多个表清除。 我使用“插入选择”查询来选择并批量插入备份表,并从源中删除这些记录。 错误日志表中捕获的错误输出记录。注意,每个模式而不是每个表都有一个错误日志表。

对于错误的记录,Oracle在错误日志表中插入行ID,我也需要在日志表中捕获其他列的详细信息。 表格结构如下:

CREATE TABLE error_log (
  ora_err_number$ NUMBER, 
  ora_err_mesg$ VARCHAR2(2000), 
  ora_err_rowid$ ROWID, 
  ora_err_optyp$ VARCHAR2(2), 
  ora_err_tag$ VARCHAR2(2000)
);

从文档看来,我们似乎可以使用ora_err_tag $添加自定义信息。我可以像下面这样,

情况1:

update SCHEMA.TABLE_A set COL1 = 1234567890
log errors into SCHEMA.ERROR_LOG('ID:' || COL1) reject limit unlimited;

如果更新失败,以上查询将col1值存储在错误日志中。

情况2: 但是,当我尝试使用“插入选择项”时,它说的是无效的标识符。我也尝试过使用别名,但是它不起作用。

INSERT into SCHEMA.TABLE_A(COL1, COL2, COL3, COL4) 
select COL1, COL2, COL3, COL4 from TABLE_A 
where COL1 in (select X from SCHEMA.PURGE_TABLE)
log errors into SCHEMA.ERROR_LOG('ID:' || COL1) reject limit unlimited;

我是否缺少某些语法,或者我们无法以这种方式捕获列值?任何帮助,不胜感激。谢谢!

0 个答案:

没有答案
相关问题