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 :

XMLGEN pas aussi bon que XMLQUERY ?


Sujet :

SQL Oracle

  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 21
    Par défaut XMLGEN pas aussi bon que XMLQUERY ?
    Bonjour,
    j'avais une procédure DBMS_XMLQUERY en 8i.

    Je tente de transférer cette proc sur 10g. Mais surprise : XMLGEN n'a pas toutes les méthodes de XMLQUERY. Alors comment faire ?

    Je souhaite obtenir:

    <?xml version = '1.0' encoding = 'ISO-8859-1'?>
    <ELEMENTS1>
    <el1 code="201200">
    <code>201200</code>
    <nom>FRAIS</nom>
    </el1>
    </ELEMENTS1>

    1. Pour mettre la 1ere ligne à jour pour l'encoding qui m'intéresse
      avec XMLQUERY : setEncodingTag()
      avec XMLGEN : aucune méthode
    2. Pour mettre en attribut d'un noeud une colonne de la table
      avec XMLQUERY : setRowIdAttrName() et setRowIdAttrValue()
      avec XMLGEN : aucune méthode


    Comment puis-je m'en sortir ?

    Merci

  2. #2
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 21
    Par défaut Ma solution

    Bon, j'ai pas vraiment trouvé mon bonheur, mais je suis arrivé au résultat.
    1. Pour mettre la 1ere ligne à jour pour l'encoding qui m'intéresse
      Je suis obligé de passer par GETXMLTYPE au lieu de GETXML, pour ne pas avoir la première ligne de versionning :

      XMLData := DBMS_XMLGEN.GETXMLTYPE(queryCtx);

      Ensuite je prends une variable pour constituer ma ligne :
      lXSL :='<?xml version="1.0" encoding="ISO-8859-1"?>' || chr(10)

      Puis, je concatène :
      XmlFic := XmlData.getClobVal();
      XmlFic := lXSL || XmlFic;
    2. Pour mettre en attribut d'un noeud une colonne de la table
      Je suis obligé de passer par une création de data type :
      CREATE OR REPLACE TYPE vdata_t AS OBJECT("@code" VARCHAR2(10), nom VARCHAR2(35));

      ensuite j'utilise le type de la manière suivante :

      query := 'SELECT vdata_t(code, nom) as el1 FROM table';

      puis :

      queryCtx := DBMS_XMLGEN.newContext(query);
      XMLData := DBMS_XMLGEN.GETXMLTYPE(queryCtx);


    Et j'arrive au résultat attendu !

    Mais si vous avez une manière plus élégante de faire, je suis preneur...

Discussions similaires

  1. Réponses: 31
    Dernier message: 22/04/2014, 14h55
  2. Rave 6.5 BE...aussi puissant que les états Access ?
    Par Mustard007 dans le forum Bases de données
    Réponses: 2
    Dernier message: 14/02/2006, 21h36
  3. Réponses: 3
    Dernier message: 13/10/2005, 11h31
  4. Réponses: 3
    Dernier message: 16/11/2004, 15h51

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