我有一个动态的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.
在运行上述查询时,只插入了一行。并抛出以下错误:
ORA-24381: error(s) in array DML.
知道为什么上面的事情正在发生?
答案 0 :(得分: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));