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 :

Générer fichier XML en PL/SQL [11g]


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Septembre 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 10
    Par défaut Générer fichier XML en PL/SQL
    Bonjour,

    Je dois faire une procédure pl/sql qui génère un fichier xml dans un répertoire spécifique, pour pourvoir l'intégré dans un autre logiciel.
    J'ai découvert plein de truc sympathique que je ne soupçonnais pas avec Oracle.
    XMLELEMENT, XMLATTRIBUTS, ... j'arrive à avoir un affichage XML, mais je n'arrive pas à généré de fichier.
    j'ai essayer avec le script trouver dans la FAQ
    http://oracle.developpez.com/faq/?pa...-au-format-XML
    Mais j'ai le message suivant: l'identificateur 'DBMS_XMLQUERY.GETXML' doit être déclaré
    j'ai essayé aussi avec les fonctions de DBMS_XMLDOM.writeToFile l'ai le message "DBMS_XLMDOM.DOMDOCUMENT' doit étre déclaré.
    Je suis en oracle 11g.
    Dois-je installé ces packages sur oracle ?
    Où les trouver ?
    J'ai les DBMS_XMLGEN et DBMS_XMLSTORE de disponible mais je n'ai rien trouvé pour créer un fichier xml.
    Merci de votre aide.
    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
    30
    31
    32
    33
    34
     
    create or replace PROCEDURE write_orders IS
    CURSOR order_xml_cur IS
    SELECT 
    XMLElement("XDOC",
      XMLElement("MESSAGEVERSION", '1.0'),
      XMLElement("MESSAGETOPIC",'machinmachin'),
      XMLElement("ENVIRONNEMENT",
        XMLElement("DDENVNME",'DEM')
      )
      ,XMLElement("FOLDERLIST",
        XMLElement("FOLDER",
          XMLFOREST('1' "DDWRKRGCHK",  
                    '7' "DDPRPASKFN",  
                    'P01' "DDDDBID",   
                    'A03' "DDFLDID"  
          )
        )
      )
     
     
    ).extract('/') as xml_output
    FROM dual;
     
    v_DomDoc DBMS_XMLDOM.DOMDocument;
    v_FileName VARCHAR2(80);
    v_OutputDir VARCHAR2(80) := 'C:\export\';
    BEGIN
    FOR rc_order IN order_xml_cur LOOP
    v_DomDoc := DBMS_XMLDOM.newDOMDocument(rc_order.xml_output);
    v_FileName := v_OutputDir || 'test.xml';
    DBMS_XMLDOM.writeToFile(v_DomDoc, v_FileName);
    END LOOP;
    END;

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    J'avais bossé sur un projet similaire il y a plusieurs années, la méthode la plus simple c'était de passer par un CLOB et de le générer sur le serveur Oracle, puis de le récupérer.

    Dans les très grandes lignes :
    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
    declare
        v$_file               CLOB;
        v$_clob               CLOB;
        v$_file_name          VARCHAR2(50) := 'TOTO.XML';
        v$_file_dir           VARCHAR2(10) DEFAULT 'EXTRACT'; -- votre directory Oracle
     
    begin
     
        dbms_lob.createtemporary(v$_file, true);
     
        select xmlroot(...).getClobVal() into v$_clob
          from ...;
     
        dbms_lob.append(v$_file, v$_clob);
        dbms_xslprocessor.clob2file(v$_file, v$_file_dir, v$_file_name);
        dbms_lob.freetemporary(v$_file);
     
    end;
    /

  3. #3
    Membre habitué
    Inscrit en
    Septembre 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 10
    Par défaut
    Merci, c'est une bonne piste, mais j'ai le même message d'erreur
    PLS-00201: l'identificateur 'DBMS_XSLPROCESSOR.CLOB2FILE' doit être déclaré
    je doit vraiment avoir un problème de package à installer je pense.

  4. #4
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Le package en question se trouve dans le schema xdb. Commencez par vérifier la présence de ce schéma dans la base. Vous utilisez quelle version d'Oracle ?

  5. #5
    Membre habitué
    Inscrit en
    Septembre 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 10
    Par défaut
    Oracle 11.

  6. #6
    Membre habitué
    Inscrit en
    Septembre 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 10
    Par défaut
    Je ne trouve pas de schema xdb... d'après mes recherches Il faut certainement installer XDK je pense

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

Discussions similaires

  1. Parcourir un fichier xml en pl/sql
    Par wislam2007 dans le forum PL/SQL
    Réponses: 1
    Dernier message: 08/09/2008, 15h51
  2. générer fichier XML a partir de l interface
    Par Septembre84 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 09/05/2008, 12h30
  3. Générer fichier XML via XSD :
    Par comboDev dans le forum C#
    Réponses: 2
    Dernier message: 13/08/2007, 15h21
  4. générer fichier XML à partir d'une BD
    Par skyangel20 dans le forum XQUERY/SGBD
    Réponses: 2
    Dernier message: 22/05/2007, 11h31
  5. Générer fichier XML avce sql
    Par Tigresse dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 19/04/2005, 12h25

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