我有一個過程procedure1
給出如下,在執行這個程序,我得到的錯誤繼續迭代時DUP_VAL_ON_INDEX
值表TESTTABLE123是,
create or replace procedure procedure1 as
CURSOR TESTTABLE124_CUR IS SELECT * FROM TESTTABLE123 ;
begin
FOR i IN TESTTABLE124_CUR LOOP
BEGIN
INSERT INTO TESTTABLE124 (select * from TESTTABLE123);
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
DBMS_OUTPUT.PUT_LINE('duplicate value');
CONTINUE;
END ;
END LOOP;
commit;
end procedure1;
, An UPDATE or INSERT statement attempted to insert a duplicate key.
但是爲什麼即使第一行沒有插入到第二個表中。
我的要求是如果發生錯誤,它應該繼續迭代並插入即將到來的行。
在我需要寫'i.col1,i.col2 ... i.col100'如果我有100第一部分列? – NaaN
是的,一般來說,您必須在靜態SQL中編寫所有列名。但是,您可以使用行類型,請參見[Oracle:將rowtype數據插入到另一個表中](http://stackoverflow.com/a/13867022/119634)。 –