Oracle 10g: Extraire des données (select) à partir de XML (de Type CLOB)
Je suis nouveau dans Oracle et j'ai peut-être trivial - un problème dans un select. (Je suis en utilisant Oracle 10g Express Edition).
J'ai une DB avec un champ CLOB: mytab.xml
Cette colonne ont un XML comme ceci:
<?xml version="1.0" encoding="iso-8859-1"?>
<info>
<id> 954 </id>
<idboss> 954 </idboss>
<name> Fausto </name>
<sorname> Anonimo </sorname>
<phone> 040000000 </phone>
<fax> 040000001 </fax>
</info>
Je suis en train de faire un "simple" select pour obtenir, par exemple, la valeur de 'fax' tag. Mais j'ai un peu de problème et je ne suis pas en mesure de comprendre mon erreur. Par exemple:
select extract(xml, '//fax').getStringVal() from mytab;
ORA-00932: inconsistent datatypes: expected - got
select extract(xmltype(xml), '//fax').getStringVal() from mytab;
ORA-06502: PL/SQL: numeric or value error
ORA-06512: at "SYS.XMLTYPE", line 254
J'ai essayé aussi avec "extractvalue", mais j'ai les mêmes problèmes.
où je suis mal à faire cela?
OriginalL'auteur mymark | 2011-02-03
Vous devez vous connecter pour publier un commentaire.
Essayez plutôt ceci:
Désolé.... oui, votre réponse fonctionnent parfaitement! Dans le cas précédent, j'ai obtenu un xml nul ^^!
En 11g je peux laisser
.getStringVal()
-partie. Aucune idée à propos de 10g comme je n'ai pas tout ici.OriginalL'auteur dogbane
Essayez d'utiliser
xmltype.createxml(xml)
.Comme dans
Il a travaillé pour moi.
Si vous voulez améliorer ou de manipuler encore plus loin.
Essayer quelque chose comme cela.
Espère que cela aide quelqu'un.
OriginalL'auteur Silva
cette requête fonctionne parfaitement dans mon cas
OriginalL'auteur user6691970
Vous pouvez réaliser avec les requêtes ci-dessous
select extract(xmltype(xml), '//fax/text()').getStringVal() from mytab;
select extractvalue(xmltype(xml), '//fax') from mytab;
OriginalL'auteur Ravi
Vous pouvez essayer de créer DBMS_XMLPARSER.analyseur objet de la CLOB XML et d'obtenir un DBMS_XMLDOM.Objet DOMDocument. Ensuite, utilisez DBMS_XMLDOM méthodes d'emballage pour obtenir la valeur de n'importe quel nœud.
Alors utiliser les méthodes ci-dessous pour en extraire la valeur du nœud
DBMS_XMLDOM.getElementsByTagName(doc_, 'NodeName');
DBMS_XMLDOM.GetNodeValue(node_obj_);
Reportez-vous plus sur DBMS_XMLDOM méthodes ici.
OriginalL'auteur S.Roshanth
En cas de :
Requête :
OriginalL'auteur O'sama