我正在一个项目中,我们在其中备份清除的记录并将其从主表中删除。此过程涉及多个表清除。 我使用“插入选择”查询来选择并批量插入备份表,并从源中删除这些记录。 错误日志表中捕获的错误输出记录。注意,每个模式而不是每个表都有一个错误日志表。
对于错误的记录,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;
我是否缺少某些语法,或者我们无法以这种方式捕获列值?任何帮助,不胜感激。谢谢!