EKSEKUSI SEGERA dalam pernyataan FORALL

Saya mencoba yang berikut ini

FORALL l_loop_cntr IN 1..l_count
EXECUTE IMMEDIATE ' INSERT INTO ' ||c_table || ' VALUES l_NE_BILL_REPORTS_table (:1) ' USING
l_loop_cntr;

nama tabel saya dinamis.

tapi itu memberikan kesalahan Kesalahan kompilasi untuk PROCEDURE PL_OWNER.TEST_BULK

Kesalahan: PLS-00435: Pernyataan DML tanpa BULK In-BIND tidak dapat digunakan di dalam FORALL Baris: 27 Teks: EXECUTE IMMEDIATE ' INSERT INTO ' ||c_table || ' NILAI l_NE_BILL_REPORTS_table (:1) ' MENGGUNAKAN l_loop_cntr;


person user1717270    schedule 03.04.2014    source sumber


Jawaban (1)


Anda perlu mereferensikan koleksi di klausa using; indeks itu sendiri tidak berarti apa-apa. Anda belum menunjukkan nama koleksinya, jadi gantikan nama asli Anda dengan col; Saya berasumsi l_count sama dengan col.last:

FORALL l_loop_cntr IN my_col.first..my_col.last
  EXECUTE IMMEDIATE 'INSERT INTO ' || c_table
    || ' VALUES l_NE_BILL_REPORTS_table (:1)'
  USING my_col(l_loop_cntr);
person Alex Poole    schedule 03.04.2014