2011-06-27 4 views
0

j'ai une procédure stockée:dans l'exécution La procédure stockée

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; 

Mais, sur la compilation du code ci-dessus je reçois

[Erreur] PLS-00801 (9: 5): PLS- 00801: erreur interne [* ASSERT au fichier pdw4.c, ligne 607; Expression inconnue Expr = 283 .; AAAAAA_ FFF _P__274784 [9, 5]]. "tableName || ID (k)" table déjà créé avant d'exécuter cette procédure .

Toute idée de pourquoi je reçois cette erreur. S'il vous plaît aider.

Répondre

5

Le FORALL doit être inséré dans le même tableau. Il fait un seul PARSE et plusieurs BIND/EXECUTES. En tant que tel, vous ne pouvez pas utiliser une variable de tableau [ID (k)] pour former votre nom de table.

+0

Si je veux avoir une telle requête, alors existe-t-il une solution de contournement. – facebook