在FORALL语句中执行IMMEDIATE

时间:2014-04-03 13:33:49

标签: oracle11g

我正在尝试以下

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:没有BULK In-BIND的DML语句不能在FORALL中使用 行:27 文字:EXECUTE IMMEDIATE'插入' || c_table || '价值l_NE_BILL_REPORTS_table(:1)'使用l_loop_cntr;

1 个答案:

答案 0 :(得分:0)

您需要在using子句中引用该集合;索引本身并不意味着什么。您尚未显示调用该集合的内容,因此请将您的实际名称替换为col;我假设l_countcol.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);