[PL/SQL] Charger une table dans une collection
Bonjour,
je souhaiterais charger le contenu d'une table dans une collection (ou un autre type de structure si c'est plus approprié) pour pouvoir la réinjecter (avec quelques traitement au passage) dans une autre table.
J'ai suivi ce que la doc de SheikYerbouti dit à ce sujet, à savoir j'ai executer le code suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
DECLARE
TYPE TYP_TAB_AGENT IS TABLE OF RHAP_PERSONAL_DATA%Rowtype ;
Tabagent TYP_TAB_AGENT ;
BEGIN
select * BULK COLLECT into Tabagent from RHAP_PERSONAL_DATA;
For i IN Tabagent.first..Tabagent.last Loop
dbms_output.put_line( Tabagent(i).matricule ) ;
End loop ;
END;
/ |
J'ai l'erreur suivante :
Code:
1 2 3 4 5 6
|
select * BULK COLLECT into Tabagent from RHAP_PERSONAL_DATA;
*
ERREUR à la ligne 2 :
ORA-06550: Ligne 2, colonne 28 :
PLS-00201: l'identificateur 'TABAGENT' doit être déclaré |
La doc précise que les bout de codes sont garanties pour oracle 9i, et je suis en présence d'oracle 8i.
Pour le moment j'ai le code suivant qui marche :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
TYPE TAB_AGENT_PRENOM IS TABLE OF RHAP_PERSONAL_DATA.NAME%type;
TYPE TAB_AGENT_MAT IS TABLE OF RHAP_PERSONAL_DATA.EMPLID%type;
TYPE TAB_AGENT_CIV IS TABLE OF RHAP_PERSONAL_DATA.NAME_PREFIX%type;
TYPE TAB_AGENT_NOM IS TABLE OF RHAP_PERSONAL_DATA.FIRST_NAME%type;
prenom TAB_AGENT_PRENOM;
nom TAB_AGENT_NOM;
matricule TAB_AGENT_MAT;
civilite TAB_AGENT_CIV;
BEGIN
select EMPLID, NAME, FIRST_NAME, NAME_PREFIX BULK COLLECT into matricule, nom, prenom,
civilite from RHAP_PERSONAL_DATA; |
Cependant j'aimerai utiliser une seule et même structure de données.
Merci de votre aide