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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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