我有一个存储过程:
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;
但是,在编译上面的代码时我得到了
[错误] PLS-00801(9:5):PLS-00801: 内部错误[ * ASSERT at file pdw4.c,第607行;未知的表达 Expr = 283。; AAAAAA_ FFF _P__274784 [9, 5]。 “tableName || ID(k)”表 已经在运行之前创建了 过程
我知道为什么会收到此错误。 请帮忙。
答案 0 :(得分:5)
FORALL必须插入同一个表中。它执行单个PARSE和多个BIND / EXECUTES。因此,您无法使用数组变量[ID(k)]来形成表名。