执行存储过程中的问题

fac*_*ook 0 oracle plsql

我有一个存储过程:

create or replace procedure AAAAAA(
ID in dbms_sql.number_table,
Name in dbms_sql.varchar2s
)
is
 tableName varchar2(30) := 'QWERT_';
Begin
Forall k in 1...ID.COUNT SAVE EXCEPTIONS
EXECUTE IMMEDIATE  'insert into ' || tableName || ID(k) ||   
' values (:1,:2)' using ID(k), NAME(k);
--EXCEPTION HANDLING CODE
End;
Run Code Online (Sandbox Code Playgroud)

但是,在编译上面的代码时,我得到了

[错误] PLS-00801(9:5):PLS-00801:内部错误[ *文件pdw4.c的ASSERT,第607行; 未知的表达式Expr = 283.AAAAAA_ FFF _P__274784 [9,5]].在运行此过程之前已经创建了"tableName || ID(k)"表.

知道为什么我得到这个错误.请帮忙.

Gar*_*ers 5

FORALL必须插入到同一个表中.它执行单个PARSE和多个BIND/EXECUTES.因此,您不能使用数组变量[ID(k)]来形成表名.