Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/04/2008, 14h53   #1
Membre émérite
 
Avatar de Yorglaa
 
Inscription : janvier 2004
Messages : 845
Détails du profil
Informations personnelles :
Âge : 41
Localisation : Suisse

Informations forums :
Inscription : janvier 2004
Messages : 845
Points : 939
Points : 939
Par défaut affichage des colonnes "Null" en XML

Bonjour,
j'utilise une méthode "pompée" ici même pour générer un fichier XML depuis un Select, mais il semble que si une colonne renvoie Null elle ne figure pas du tout dans le résultat en XML...
Code :
1
2
3
4
5
6
7
8
9
10
11
declare
    rc sys_refcursor;
begin
        open rc FOR 
                    SELECT
                            sysdate AS today
                            , NULL AS coucou
                            , sysdate +1 AS tomorrow
                    FROM    Dual ;
        dbms_xslprocessor.clob2file(xmltype(rc).getclobval,'DIR_LCV5','toto.xml');
end;
me revoie :
Citation:
<?xml version="1.0"?>
<ROWSET>
<ROW>
<TODAY>07/04/08</TODAY>
<TOMORROW>08/04/08</TOMORROW>
</ROW>
</ROWSET>
or ce que j'aimerais c'est avoir également la colonne "coucou" avec juste la balise ouvrante et fermante, sans données...
Le seul myen que j'ai trouvé c'est avec un Decode qui renvoie un espace... mais je préfèrerais avoir la balises ouvrantes/fermante sans espace entre deux...

savez-vous si il y a une moyen, un paramètre ou autre ?

merci d'avance pour vos infos !

EDIT :
ah oui, je suis en 9.2.0.7
__________________
Il est plus facile de voir les signes avant-coureurs après coup que l'inverse !

Yorglaa
Yorglaa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2008, 16h07   #2
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 927
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Finance

Informations forums :
Inscription : décembre 2005
Messages : 2 927
Points : 4 549
Points : 4 549
tu peux tenter avec DBMS_XMLGEN par exemple

Code :
1
2
3
4
5
6
7
8
9
declare
  ctx dbms_xmlgen.ctxhandle;
begin
  ctx := dbms_xmlgen.newcontext('select 1 x, null y, 2 z from dual');
  dbms_xmlgen.setnullhandling(ctx,dbms_xmlgen.empty_tag); 
  dbms_xslprocessor.clob2file(dbms_xmlgen.getxmltype(ctx).getclobval,
    'DATA_PUMP_DIR','toto.xml');
end;
/
Code :
1
2
3
4
5
6
7
<ROWSET>
 <ROW>
  <X>1</X>
  <Y/>
  <Z>2</Z>
 </ROW>
</ROWSET>
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2008, 17h00   #3
Membre émérite
 
Avatar de Yorglaa
 
Inscription : janvier 2004
Messages : 845
Détails du profil
Informations personnelles :
Âge : 41
Localisation : Suisse

Informations forums :
Inscription : janvier 2004
Messages : 845
Points : 939
Points : 939
Super, merci beaucoup...
en plus je peux même utiliser cette méthode avec un sys_refcusor !
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
declare
    rc          sys_refcursor;
    ctx         dbms_xmlgen.ctxhandle;
begin
 
        open rc FOR SELECT
                            sysdate AS today
                            , NULL AS coucou
                            , sysdate +1 AS tomorrow
                    FROM    Dual ;
 
        ctx := dbms_xmlgen.newcontext(rc) ;
        dbms_xmlgen.setnullhandling(ctx,dbms_xmlgen.Empty_Tag) ; 
        dbms_xslprocessor.clob2file(dbms_xmlgen.getxmltype(ctx).getclobval,'DIR_XML','toto.xml') ;
end;
merci encore !
__________________
Il est plus facile de voir les signes avant-coureurs après coup que l'inverse !

Yorglaa
Yorglaa est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h21.


 
 
 
 
Partenaires

Hébergement Web