执行存储过程中的问题

时间:2011-06-27 09:17:53

标签: 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;

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

  

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

我知道为什么会收到此错误。 请帮忙。

1 个答案:

答案 0 :(得分:5)

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