2011-06-27 85 views
0

我有一個存儲過程:問題在執行存儲過程

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在文件 pdw4.c,第607行;未知表達 Expr = 283 .; AAAAAA_ FFF _P__274784 [9, 5]]。在運行此 過程之前已經創建了「tableName || ID(k)」表 。

任何想法,爲什麼我得到這個錯誤。 請幫忙。

回答

5

FORALL必須插入到同一個表中。它執行單個PARSE和多個BIND/EXECUTES。因此,您不能使用數組變量[ID(k)]來形成表名。

+0

如果我想要這樣的查詢,那麼是否有任何解決方法。 – facebook