[Oracle] Insertion Xml dans une table
	
	
		Bonjour,
Je dispose d'une table dans Oracle dont une de mes colonnes est de type XMLTYPE
	Code:
	
| 12
 3
 4
 5
 
 | CREATE TABLE GED_XML
(
  ID_GED_XML      NUMBER,
  GED_XML_SPEC  SYS.XMLTYPE
) | 
 Mon but est de manipuler le contenu de la colonne GED_XML_SPEC, d'extraire qques éléments pour les réinsérer dans une autre table dont voici la structure : 
	Code:
	
| 12
 3
 4
 5
 6
 
 | CREATE TABLE GDD_REGISTRE
(
  ID_DOSSIER       NUMBER,
  NOM                 VARCHAR2(50 BYTE),
  PRENOM            VARCHAR2(30 BYTE)
) | 
 Le fichier XML que je reçois et qui est stocké sur disque et qui ss'appelle Essai_Xml.xml contient plusieurs colonnes dont l'identifiant, le nom et le prénom.
1) J'écris une procédure, je prends mon fichier, je le transforme et je l'inserre dans la table GED_XML.  Cela marche fort bien.
Ci-après une partie du code :
	Code:
	
| 12
 3
 4
 5
 6
 7
 8
 
 |  
        ...
        V_REPERTOIRE_XML := 'FICHIER_XML'; 
        V_FICH_XML       := 'Essai_Xml.xml';
       GIP_PC_CHARGER_FICHIER_LOB (V_XML_DOC, V_FICH_XML,   V_REPERTOIRE_XML);
 
      INSERT INTO GED_XML VALUES (1, XMLTYPE (V_XML_DOC) );
      .... | 
 2) J'écris une deuxième procédure pour faire une insertion dans ma table Gdd_Registre
	Code:
	
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 
 |  
   ...   
   V_XML_DOC    XMLTYPE;
   V_ID_DOSSIER NUMBER;
   V_NOM           VARCHAR2(50);
   V_PRENOM      VARCHAR2(30);  
 
BEGIN  
 
   SELECT GED_XML_SPEC 
    INTO  V_XML_DOC 
      FROM  GED_XML;
 
         V_ID_DOSSIER := V_XML_DOC.EXTRACT ('//ID_DOSSIER/text()').getnumberval(); 
         V_NOM        := V_XML_DOC.EXTRACT ('//NOM/text()').getstringval();
         V_PRENOM   := V_XML_DOC.EXTRACT ('//PRENOM/text()').getstringval();
 
         INSERT INTO GDD_REGISTRE (ID_DOSSIER, NOM, PRENOM)
           VALUES (V_ID_DOSSIER, V_NOM, V_PRENOM);  
      ... | 
 Le résultat est que je n'ai qu'une seule ligne dans ma table alors que je dois avoir autant de lignes que d'enregistrements contenus dans mon GED_XML_SPEC
Exemple :
Pour ce fichier en entrée et qui est contenu dans GED_XML_SPEC, je m'attends à avoir 5 enregistrements dans ma table
	Code:
	
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 
 | <?xml version="1.0"?>
<ROWSET>
 <ROW>
  <ID_DOSSIER>6152292</ID_DOSSIER>
  <NOM>RAMLIM</NOM>
  <PRENOM>ADÉMAR</PRENOM>
  <TYPE_PERS>PP</TYPE_PERS>
 </ROW>
 <ROW>
  <ID_DOSSIER>6389233</ID_DOSSIER>
  <NOM>ROBOTWLIM FEMUL</NOM>
  <PRENOM>MATHWIN</PRENOM>
  <TYPE_PERS>PP</TYPE_PERS>
 </ROW>
 <ROW>
  <ID_DOSSIER>6497713</ID_DOSSIER>
  <NOM>WOLIPUT</NOM>
  <PRENOM>FRANCOIS-X B</PRENOM>
  <TYPE_PERS>PP</TYPE_PERS>
 </ROW>
 <ROW>
  <ID_DOSSIER>6647564</ID_DOSSIER>
  <NOM>BEDNITF</NOM>
  <PRENOM>EUCHST</PRENOM>
  <TYPE_PERS>PP</TYPE_PERS>
 </ROW>
 <ROW>
  <ID_DOSSIER>6648109</ID_DOSSIER>
  <NOM>KNOS</NOM>
  <PRENOM>JEANGUY</PRENOM>
  <TYPE_PERS>PP</TYPE_PERS>
 </ROW>
</ROWSET> | 
 mais j'ai qque chose de ce genre : 
	Code:
	
6.15229263892336E69
 qui semble être mes numéros de dossiers l'un à la suite de l'autre.
Quelqu'un pourrait-il me dire comment faire ? Une boucle peut-être avec un curseur ? Faut dire que l'exemple sur lequel je me suis basé et qui vient d'oracle ne contient qu'un seul enregistrement. Cela s'expliquerait.
Merci,