【发布时间】:2013-05-29 16:42:48
【问题描述】:
我在Table2 中插入一些来自Table1 的值。可能存在主键冲突。我正在使用EXECUTE IMMEDIATE 将值从Table1 插入到Table2。
记录可能以百万为单位,并且只有 1 次提交,即,
execute immediate 'insert into table 2 (select * from table 1)';
delete from table1;
commit;
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
ROLLBACK;
--LOGGING
有没有一种方法可以记录导致异常块中主键冲突的确切行?
我知道我可以使用“批量”插入和“保存异常”方法,但是由于一些复杂的原因,我现在不能更改这个东西的脚本。
有什么建议吗?
【问题讨论】:
-
尝试使用以下方法:
DBMS_OUTPUT.PUT_LINE('SQLCODE=' || to_char(SQLCODE) || ' Error=''' || DBMS_UTILITY.FORMAT_ERROR_STACK || ''' Backtrace=''' || DBMS_UTILITY.FORMAT_ERROR_BACKTRACE || ''''. -
你能把它作为答案让我接受吗?
标签: exception-handling plsql oracle11g execute-immediate