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]manipuler des données xml sous Oracle9i


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 61
    Points : 42
    Points
    42
    Par défaut [xml]manipuler des données xml sous Oracle9i
    J'ai stocké des données en xml dans une colonne de table de type XMLType.
    J'arrive à consulter ces données en faisant ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select doc.docs.extract('//patient/nom/text()').getstringval() from docxml doc;
    Cette requete me renvoie le nom d'un patient.

    Mais j'aimerais aussi pouvoir modifier mes données xml (modifier l'adresse d'un patient par exemple) ou encore ajouter un patient.
    Comment faire???

  2. #2
    Expert éminent sénior
    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
    Points : 11 862
    Points
    11 862
    Par défaut
    La documentation Oracle, comme toujours, est un luxe d'exemples.

    Examples
    The following example updates to 4 the number of docks in the San Francisco warehouse in the sample schema OE, which has a warehouse_spec column of type XMLType:

    SELECT warehouse_name,
    EXTRACT(warehouse_spec, '/Warehouse/Docks')
    "Number of Docks"
    FROM warehouses
    WHERE warehouse_name = 'San Francisco';

    WAREHOUSE_NAME Number of Docks
    -------------------- --------------------
    San Francisco <Docks>1</Docks>

    UPDATE warehouses SET warehouse_spec =
    UPDATEXML(warehouse_spec,
    '/Warehouse/Docks/text()',4)
    WHERE warehouse_name = 'San Francisco';

    1 row updated.

    SELECT warehouse_name,
    EXTRACT(warehouse_spec, '/Warehouse/Docks')
    "Number of Docks"
    FROM warehouses
    WHERE warehouse_name = 'San Francisco';

    WAREHOUSE_NAME Number of Docks
    -------------------- --------------------
    San Francisco <Docks>4</Docks>
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 61
    Points : 42
    Points
    42
    Par défaut
    je te remercie pour ton aide seulement j'ai un petit probleme avec le updatexml:
    ma table est construite comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Nom                                       NULL ?   Type
    ----------------------------------------- -------- ---------------
    NUM                                       NOT NULL NUMBER
    PATIENT                                            SYS.XMLTYPE
    et lorsque je lance cette requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    UPDATE patientxml
    SET patient = 
    updatexml(patient,'/patient/nom/text()',dupont) 
    WHERE num = 1;
    je recois ce message d'erreur:

    updatexml(patient,'/patient/nom/text()',dupont)
    *
    ERREUR à la ligne 3 :
    ORA-00904: Nom de colonne non valide

    je ne saisis pas l'erreur sachant que je me suis servi de l'exemple qu'on m'a donné dans le message précédent.

  4. #4
    Expert éminent sénior
    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
    Points : 11 862
    Points
    11 862
    Par défaut
    ne prend-il pas Dupont pour un nom de colonne ?

    'Dupont' ne fonctionnerait-il pas mieux ?


    Sinon, je vous invite à consulter la documentation sur ce sujet

    http://tahiti.oracle.com/pls/db92/db92.drilldown?levelnum=2&toplevel=a96620&method=FULL&chapters=0&book=&wildcards=0&preference=Examples&expand_all=&verb=&word=UPDATEXML#a96620
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 61
    Points : 42
    Points
    42
    Par défaut
    avec ou sans les cotes cé pareil je vais regarder à l'adresse que tu m'as indiquée et je te remercie.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 61
    Points : 42
    Points
    42
    Par défaut
    Apparament il y a des grandes differences au niveau de XMLType selon si on utilise la version 9.0.1 ou la 9.2 d'Oracle.c'est pas dit explicitement dans les docs d'Oracle mais je pense que la version 9.0.1 ne connait pas la fonction updatexml() et c'est la version sous laquelle je tourne.
    Je pourrai essayer sur la version 9.2 lundi je vous tient au courant si ca vous interesse.
    D'ici là si quelqu'un sait si ca vient de la qu'il me le dise et ca voudrait dire que j'ai vraiment un probleme!!
    A bientot.

  7. #7
    Expert éminent sénior
    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
    Points : 11 862
    Points
    11 862
    Par défaut
    Nous attendons avec plaisir vos informations.
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 61
    Points : 42
    Points
    42
    Par défaut
    C'est bien ce ke je pensais la fonction updatexml() fonctionne qu'à partir de la version 9.2 d'Oracle.Pour les versions antérieures seule la fonction extract() fonctionne.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/11/2011, 12h04
  2. Exploiter des données XML sous Visual Studio (XMLDataDocument)
    Par johnnhoj dans le forum Visual Studio
    Réponses: 2
    Dernier message: 12/06/2010, 17h54
  3. [JDOM] Manipuler des données XML avec Java et JDOM
    Par Premium dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 27/02/2009, 11h59
  4. récupérer des données XML sous forme de tableau
    Par ar vuzhugenn dans le forum ActionScript 1 & ActionScript 2
    Réponses: 8
    Dernier message: 22/04/2008, 21h21
  5. Réponses: 1
    Dernier message: 06/11/2007, 16h43

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