2011-07-14 26 views
1

使用序列我有一個動態的SQL:動態SQL

forall k in 1..Job_ID.COUNT Save exceptions 
EXECUTE IMMEDIATE 'insert into XYZ values(:1,:2,:3)' using sequence_one.NextVal,job_id(k),Name(k); 
///Exception handling. 

在運行abouve查詢只有一行是越來越inserted.And以下錯誤被拋出:

ORA-24381: error(s) in array DML. 

任何想法,爲什麼上面事情正在發生?

回答

4

您是否真的希望每個插入的行在第一列中具有相同的序列值?如果你不應該這樣做:

forall k in 1..Job_ID.COUNT Save exceptions 
    EXECUTE IMMEDIATE 'insert into XYZ values(sequence_one.NextVal,:2,:3)' 
    using job_id(k),Name(k); 

甚至更​​好(除非你有一個很好的理由使用動態SQL:

forall k in 1..Job_ID.COUNT Save exceptions 
    insert into XYZ values(sequence_one.NextVal, job_id(k), Name(k)); 
+1

+1幾秒打我:-) –