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 :

XML et requete hierarchique


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut XML et requete hierarchique
    Bonjour,

    J'ai trouvé le code suivant permettant de sortir en XML le résultat d'une requête hiérarchique:

    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
    SQL> SELECT XMLELEMENT
      2            ("employees",
      3             (SELECT DBMS_XMLGEN.getxmltype
      4                        (DBMS_XMLGEN.newcontextfromhierarchy
      5                            ('SELECT level,
      6               XMLElement("employee",
      7                           XMLElement("empno", empno),
      8                           XMLElement("ename", ename),
      9                           XMLElement("sal", sal),
     10                           XMLElement("hiredate", hiredate))
     11           FROM emp
     12           START WITH mgr is null
     13           CONNECT BY PRIOR empno = mgr
     14           ORDER SIBLINGS BY ename'))
     15                FROM DUAL)) xmldoc
     16    FROM DUAL;
     
    XMLDOC
    -------------------------------------------------------------------
    <employees><employee>
     
    SQL>
    Seulement, elle ne sort rien alors que la table contient des données:
    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
     
    SQL> select * from emp;
     
         EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
    ---------- ---------- --------- ---------- --------- ---------- ---------- ----------
          7369 SMITH      CLERK           7902 17-DEC-80        800                    20
          7499 ALLEN      SALESMAN        7698 20-FEB-81       1600        300         30
          7521 WARD       SALESMAN        7698 22-FEB-81       1250        500         30
          7566 JONES      MANAGER         7839 02-APR-81       2975                    20
          7654 MARTIN     SALESMAN        7698 28-SEP-81       1250       1400         30
          7698 BLAKE      MANAGER         7839 01-MAY-81       2850                    30
          7782 CLARK      MANAGER         7839 09-JUN-81       2450                    10
          7788 SCOTT      ANALYST         7566 09-DEC-82       3000                    20
          7839 KING       PRESIDENT            17-DEC-80       5000                    10
          7844 TURNER     SALESMAN        7698 08-SEP-81       1500          0         30
          7876 ADAMS      CLERK           7788 12-JAN-83       1100                    20
     
         EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
    ---------- ---------- --------- ---------- --------- ---------- ---------- ----------
          7900 JAMES      CLERK           7698 03-DEC-81        950                    30
          7902 FORD       ANALYST         7566 03-DEC-81       3000                    20
          7934 MILLER     CLERK           7782 09-DEC-82       1300                    10
     
    14 rows selected.
    une idée ?

  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'ai juste rajouté le nom du schema, mais ici c'est ok.
    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 XMLELEMENT
               ("employees",
                (SELECT DBMS_XMLGEN.getxmltype
                           (DBMS_XMLGEN.newcontextfromhierarchy
                               ('SELECT level,
                  XMLElement("employee",
                              XMLElement("empno", empno),
                              XMLElement("ename", ename),
                              XMLElement("sal", sal),
                              XMLElement("hiredate", hiredate))
              FROM scott.emp
              START WITH mgr is null
              CONNECT BY PRIOR empno = mgr
              ORDER SIBLINGS BY ename'))
                   FROM DUAL)) xmldoc
       FROM DUAL;
    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    <employees><employee>
      <empno>7839</empno>
      <ename>KING</ename>
      <sal>5000</sal>
      <hiredate>1981-11-17</hiredate>
      <employee>
        <empno>7698</empno>
        <ename>BLAKE</ename>
        <sal>2850</sal>
        <hiredate>1981-05-01</hiredate>
        <employee>
          <empno>7499</empno>
          <ename>ALLEN</ename>
          <sal>1600</sal>
          <hiredate>1981-02-20</hiredate>
        </employee>
        <employee>
          <empno>7900</empno>
          <ename>JAMES</ename>
          <sal>950</sal>
          <hiredate>1981-12-03</hiredate>
        </employee>
        <employee>
          <empno>7654</empno>
          <ename>MARTIN</ename>
          <sal>1250</sal>
          <hiredate>1981-09-28</hiredate>
        </employee>
        <employee>
          <empno>7844</empno>
          <ename>TURNER</ename>
          <sal>1500</sal>
          <hiredate>1981-09-08</hiredate>
        </employee>
        <employee>
          <empno>7521</empno>
          <ename>WARD</ename>
          <sal>1250</sal>
          <hiredate>1981-02-22</hiredate>
        </employee>
      </employee>
      <employee>
        <empno>7782</empno>
        <ename>CLARK</ename>
        <sal>2450</sal>
        <hiredate>1981-06-09</hiredate>
        <employee>
          <empno>7934</empno>
          <ename>MILLER</ename>
          <sal>1300</sal>
          <hiredate>1982-01-23</hiredate>
        </employee>
      </employee>
      <employee>
        <empno>7566</empno>
        <ename>JONES</ename>
        <sal>2975</sal>
        <hiredate>1981-04-02</hiredate>
        <employee>
          <empno>7902</empno>
          <ename>FORD</ename>
          <sal>3000</sal>
          <hiredate>1981-12-03</hiredate>
          <employee>
            <empno>7369</empno>
            <ename>SMITH</ename>
            <sal>800</sal>
            <hiredate>1980-12-17</hiredate>
          </employee>
        </employee>
        <employee>
          <empno>7788</empno>
          <ename>SCOTT</ename>
          <sal>3000</sal>
          <hiredate>1987-04-19</hiredate>
          <employee>
            <empno>7876</empno>
            <ename>ADAMS</ename>
            <sal>1100</sal>
            <hiredate>1987-05-23</hiredate>
          </employee>
        </employee>
      </employee>
    </employee>
    </employees>
    Testé sur Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 sous Windows.

  3. #3
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Salut !

    Ca ne sort rien, ou alors ça sort :
    XMLDOC
    -------------------------------------------------------------------
    <employees><employee>
    ?

    Parce que ça donne l'impression que c'est la sortie SQL*Plus qui est tronquée...

    Peut être :

  4. #4
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Citation Envoyé par pacmann Voir le message
    Peut être :
    Mais oui, bien sur ! honte sur moi (ah le boulet...)

    merci

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 19/05/2010, 22h19
  2. Requete hierarchique simple?
    Par alx92 dans le forum Requêtes
    Réponses: 1
    Dernier message: 03/11/2008, 07h03
  3. XML/Oracle requete avec l'utilisation de xmlagg
    Par FABFAB125 dans le forum SQL
    Réponses: 1
    Dernier message: 17/09/2007, 15h04
  4. [Debutant] XML vers requete
    Par Australia dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 31/08/2007, 09h52
  5. Réponses: 2
    Dernier message: 14/06/2006, 08h53

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