ВЫПОЛНИТЬ НЕМЕДЛЕННО в операторе FORALL

Я пытаюсь сделать следующее

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;

имя моей таблицы динамическое.

но выдает ошибку Ошибки компиляции для PROCEDURE PL_OWNER.TEST_BULK

Ошибка: PLS-00435: Оператор DML без BULK In-BIND нельзя использовать внутри FORALL Строка: 27 Текст: EXECUTE IMMEDIATE 'INSERT INTO' ||c_table || ' VALUES l_NE_BILL_REPORTS_table (:1) ' USING l_loop_cntr;


person user1717270    schedule 03.04.2014    source источник


Ответы (1)


Вам нужно сослаться на коллекцию в предложении using; индекс сам по себе ничего не значит. Вы не указали, как называется коллекция, поэтому подставьте свое настоящее имя вместо col; Я предполагаю, что l_count совпадает с 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