Bonjour,

Voici le problème, j'ai un fichier xml que j'essaie d'intégrer dans une table.


Sur un xml simple, cela fonctionne.

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
16
17
18
19
20
21
22
23
24
select
mon_xml_parse.* from
xmltable('$e/Agent' passing xmlparse(content '
   <Agent>
   <Matricule>000000</Matricule>
    <PrecompteObligatoire>
      <Type>VCN</Type>
      <Nature>OUV</Nature>
      <Reliquat>3600,61</Reliquat>
    </PrecompteObligatoire>
    </Agent>
    <Agent>
     <Matricule>000001</Matricule>
    <PrecompteObligatoire>
      <Type>PAT</Type>
      <Nature>OUV</Nature>
      <Reliquat>3600,61</Reliquat>
    </PrecompteObligatoire>
    </Agent>') as "e"
columns matric char(6) path 'Matricule',
phtype char(3) path 'PrecompteObligatoire/Type',
nature char(3) path 'PrecompteObligatoire/Nature',
reliquat  number(18,2) path 'PrecompteObligatoire/Reliquat'
) mon_xml_parse;
Par contre j'ai du modifié mon xml.

Si mon xml est comme ceci ça ne marche plus

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
   <Agent>
   <Matricule>000000</Matricule>
    <PrecompteObligatoire>
      <Type>VCN</Type>
      <Nature>OUV</Nature>
      <Reliquat>3600,61</Reliquat>
    </PrecompteObligatoire>
    <Matricule>000001</Matricule>
    <PrecompteObligatoire>
      <Type>PAT</Type>
      <Nature>OUV</Nature>
      <Reliquat>3600,61</Reliquat>
    </PrecompteObligatoire>
    </Agent>'
je récupère cette erreur

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
ORA-19279: XPTY0004 - non-concordance de type dynamique XQuery : attente d'une séquence mono-élément - obtention d'une séquence multi-élément
19279. 00000 -  "XQuery dynamic type mismatch: expected singleton sequence - got multi-item sequence" 
*Cause:    The XQuery sequence passed in had more than one item.
*Action:   Correct the XQuery expression to return a single item sequence.

Autre point, le xml de départ est codé comme suit

Code : Sélectionner tout - Visualiser dans une fenêtre à part
<Matricule V="000000"/>
et non pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<Matricule>000000</Matricule>
mais il ne sait pas lire la première forme et me sort Null.

Avez-vous des idées?