type de données non valide dans un cast
J'ai une table TRANSAC qui contient des transactions et une table TRANSAC_DETAIL qui contient les détails des transactions. Elles sont liées par l'id TRANSAC_ID. J'ai besoin d'effectuer plusieurs requêtes pour chacunes des transactions (ou presque). Les deux tables sont énormes (plusieurs millions de lignes). Pour une question de performance je voudrais récupérer tous les détails de la transaction courante dans une table temporaire ("l_transac") et faire mes requêtes dessus (plutôt que sur la table TRANSAC_DETAIL). Voici mon code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| DECLARE
TYPE transac_aat IS TABLE OF TRANSAC_DETAIL%
l_transac transac_aat;
BEGIN
FOR trans IN ( SELECT TRANS_ID, TAX_CODE
FROM TRANSAC
WHERE DISPATCH_CODE3='2SPLIT' )
LOOP
SELECT *
BULK COLLECT INTO l_transac
FROM TRANSAC_DETAIL
WHERE TRANS_ID=trans.TRANS_ID;
FOR line IN (SELECT *
FROM TABLE(CAST(l_transac AS transac_aat)) )
LOOP
[ ... ]
END LOOP;
[ .... ]
END LOOP;
END; |
Je récupère une erreur:
Code:
1 2 3 4
| ORA-06550: Ligne 38, colonne 59 :
PL/SQL: ORA-00902: type de données non valide
ORA-06550: Ligne 38, colonne 21 :
PL/SQL: SQL Statement ignored |
Le type "transac_aat" n'est pas accepté dans la cast.
Une idée du pourquoi?
Oracle: 10.2.0.4