IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PL/SQL Oracle Discussion :

[12C] Insertion depuis colonne XMLTYPE & Balises XML complexes


Sujet :

PL/SQL Oracle

  1. #1
    Membre éclairé Avatar de Michel38
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2005
    Messages : 225
    Par défaut [12C] Insertion depuis colonne XMLTYPE & Balises XML complexes
    Bonjour à tous,

    A chaque jour une nouvelle chose à apprendre.
    J'ai une table, et dans une colonne de cette table qui est de type XMLTYPE
    Le XML est de la forme suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <listeClients xmlns="http://www.test.fr/rcs/xsd/Client_V2">
        <clientDesc>
            <idAlternatif nomID="GUID" nomEmetteurID="NomSoc" urlRepertoireID="http://rcs.test.fr">0898681e-ac44-005a-e053-c0a84f167973</idAlternatif>
            <identifiant nomID="ID_RCS" nomEmetteurID="NomSoc" urlRepertoireID="http://rcs.test.fr">AL64IQ</identifiant>
            <nomUsage>ETMF</nomUsage>
            <typeClient>Juridique</typeClient>
            <dateParam>2024-03-14T17:22:59</dateParam>
        </clientDesc>
    </listeClients>
    Les données en rouge sont celles que je veux utiliser.
    mon code pour insérer les données est le 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    BEGIN
        INSERT INTO table_cible (
            id_import,
            type_client,
            id_rcs,
            nom,
            date_modification
        )
            SELECT
                10,
                x.type_client,
                x.id_rcs,
                x.nom,
                x.date_modification
            FROM
                table_source t,
                XMLTABLE ( '/listeClients/clientDesc'
                        PASSING t.xml_data
                    COLUMNS
                        id_rcs              VARCHAR2(4000) PATH 'identifiant',
                        nom                 VARCHAR2(4000) PATH 'nomUsage',
                        type_client         VARCHAR2(4000) PATH 'typeClient',
                        date_modification   VARCHAR2(4000) PATH 'dateParam'
                ) x
            WHERE
                t.id_import = 10;
        commit;
    END;
    Et mon problème, c'est que les données XML comportent des balises complexes.
    J'ai essayé ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
                    COLUMNS
                        id_rcs              VARCHAR2(4000) PATH 'identifiant',
    de mettre identifiant.value, identifiant.text.....
    Rien ne fonctionne, et rien n'est inséré.. Et en plus il n'y a aucune erreur à l'exécution.

    Si quelqu'un a une idée qui pourrait me débloquer.

    Michel

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 167
    Par défaut
    Bonjour,

    C'est parce que tu as un namespace dans ton xml, il faut le préciser:
    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
     
    select
    x.type_client,
    x.id_rcs,
    x.nom,
    x.date_modification 
    from t, 
    XMLTABLE (XMLNamespaces('http://www.test.fr/rcs/xsd/Client_V2' as "ns"),
                            '/ns:listeClients/ns:clientDesc'
                        PASSING t.xml_data
                    COLUMNS
                        id_rcs              VARCHAR2(4000) PATH 'ns:identifiant',
                        nom                 VARCHAR2(4000) PATH 'ns:nomUsage',
                        type_client         VARCHAR2(4000) PATH 'ns:typeClient',
                        date_modification   VARCHAR2(4000) PATH 'ns:dateParam'
                ) x;

  3. #3
    Membre éclairé Avatar de Michel38
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2005
    Messages : 225
    Par défaut
    Ah ok. Ah oui, effectivement, je ne connaissais pas.
    J'essaie tout de suite.

    Je te remercie.

    Michel

  4. #4
    Membre éclairé Avatar de Michel38
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2005
    Messages : 225
    Par défaut
    Ca marche super bien.

    Un énorme merci.

    Michel

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Toutes versions] Insertion valeur dans une balise XML
    Par franck87 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/08/2021, 20h40
  2. Réponses: 4
    Dernier message: 05/06/2007, 10h03
  3. Insertion depuis XML
    Par harbout_jr dans le forum Requêtes
    Réponses: 9
    Dernier message: 05/01/2007, 10h20
  4. [JDOM] données un attribut à une balise xml
    Par noobiewan kenobi dans le forum Format d'échange (XML, JSON...)
    Réponses: 11
    Dernier message: 09/07/2004, 15h54
  5. [Balise XML] Comment récupérer le contenu entre 2 balise?
    Par ZoumZoumMan dans le forum C++Builder
    Réponses: 5
    Dernier message: 05/03/2004, 16h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo