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

SQL Oracle Discussion :

[Oracle 9.2.0.4]Génération de xml


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 53
    Par défaut [Oracle 9.2.0.4]Génération de xml
    Bonjour,

    je veux faire un script pour générer un fichier xml.
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    declare
      doc dbms_xmldom.domdocument;
      nodedoc dbms_xmldom.domnode;
      var xmltype;
      old_critere varchar2(100) := 'a';
      crit dbms_xmldom.domelement;
      val dbms_xmldom.domelement;
      root dbms_xmldom.domelement;
      text dbms_xmldom.domtext;
      buf varchar2(3000);
      i number;
      dir varchar2(200);
      cpt number;
    begin
      var := xmltype('<root></root>');
      doc := dbms_xmldom.newdomdocument(var);
      nodedoc := dbms_xmldom.makenode(doc);
      i := 1;
      cpt := 0;
      for j in 1..200 loop
        for rec in (select ref, critere, valeur from xref where ref = 'PR0VAR2' order by critere)
        loop
          begin
            root := dbms_xmldom.getDocumentElement(doc);
            if (rec.critere != old_critere or rec.critere is null or old_critere is null) and not (rec.critere is null and old_critere is null) then 
              crit := dbms_xmldom.createelement(doc, 'crit');
              crit := dbms_xmldom.makeelement(dbms_xmldom.appendchild(dbms_xmldom.makenode(root), dbms_xmldom.makenode(crit)));
              dbms_xmldom.setAttribute(crit, 'nom', rec.critere);
              dbms_xmldom.setAttribute(crit, 'idDebut', i);
              dbms_xmldom.freenode(dbms_xmldom.makenode(crit));
            end if;
            val := dbms_xmldom.createelement(doc, 'valeur');
            val := dbms_xmldom.makeelement(dbms_xmldom.appendchild(dbms_xmldom.makenode(crit), dbms_xmldom.makenode(val)));
            dbms_xmldom.freenode(dbms_xmldom.makenode(crit));
            text := dbms_xmldom.createtextnode(doc, rec.valeur);
            text := dbms_xmldom.maketext(dbms_xmldom.appendchild(dbms_xmldom.makenode(val), dbms_xmldom.makenode(text)));
            dbms_xmldom.freenode(dbms_xmldom.makenode(text));
            dbms_xmldom.freenode(dbms_xmldom.makenode(val));
            old_critere := rec.critere;
            dbms_xmldom.setAttribute(crit, 'idFin', i);
            dbms_xmldom.setAttribute(val, 'id', i);
            i := i + 1;
            dbms_xmldom.freenode(dbms_xmldom.makenode(root));
          exception
            when others then
              dbms_output.put_line(sqlerrm);
              goto fin;
          end;
        end loop;
      end loop;
      dbms_output.put_line(cpt);
     
      <<fin>>
      select value into dir from v$parameter where name = 'utl_file_dir';
      dbms_xmldom.writetofile(doc, dir||'/test.xml');
    end;
    la boucle for j in 1..200 ne sera pas dans la procedure finale, elle n'est là que pour tester les limites de taille de fichier
    quand je lance ce script, je récupère l'erreur ora-31182 : Too many PL/SQL DOM handles specified. J'ai pourtant essayé de libérer les node. Est-ce que je m'y prends mal pour les libérer ? est-ce qu'il y a un moyen de contourner ce problème (sans upgrader en 9.2.0.5) ?

    merci d'avance

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 36
    Par défaut
    c'est bizarre l'increment de ton i est fait dans ta boucle du select ??

  3. #3
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 53
    Par défaut
    oui, uniquement pour savoir combien je récupère d'enregistrements

Discussions similaires

  1. [XML] Génération fichier XML pour RSS via PHP, problème lors de l'écriture
    Par gator dans le forum Bibliothèques et frameworks
    Réponses: 10
    Dernier message: 04/02/2012, 18h17
  2. [DOM] Génération de XML tout pas beau :(
    Par scorpiwolf dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 23/05/2006, 15h49
  3. Génération de XML
    Par Julien.alkaza dans le forum C++Builder
    Réponses: 5
    Dernier message: 06/04/2005, 15h28
  4. [LOMBOZ]Génération WEB.XML
    Par JWillow dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 14/12/2004, 23h54
  5. Réponses: 3
    Dernier message: 13/12/2004, 13h54

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