Oracle 10g: Extrahieren von Daten (select) aus der XML-Typ CLOB)
Ich bin neu in Oracle-und ich habe - vielleicht trivial - ein problem in eine Auswahl. (Ich bin mit Oracle 10g Express Edition).
Ich habe eine DB mit einem CLOB-Feld: mytab.xml
Diese Spalte, um eine XML wie diese:
<?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>
Ich versuche zu tun, eine "einfache" auswählen, um zum Beispiel den Wert 'fax' tag. Aber ich habe ein bisschen Probleme und ich bin nicht in der Lage zu verstehen, mein Fehler. Zum Beispiel:
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
Ich habe versucht auch mit "extractvalue", aber ich habe die gleichen Probleme.
wo bin ich falsch, dies zu tun?
InformationsquelleAutor mymark | 2011-02-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie dies:
Sorry.... ja, deine Antwort funktioniert perfekt! Im vorherigen Fall, ich habe eine xml-null ^^!
In 11g kann ich verlassen
.getStringVal()
-Teil aus. Keine Ahnung, 10g, da habe ich keine hier.InformationsquelleAutor dogbane
Versuchen Sie es mit
xmltype.createxml(xml)
.Als in
Es funktionierte für mich.
Wenn Sie möchten, zu verbessern oder zu manipulieren, sogar noch weiter.
Probieren Sie etwas wie dieses.
Hoffe, es hilft jemand.
InformationsquelleAutor Silva
diese Abfrage läuft perfekt in meinem Fall
InformationsquelleAutor user6691970
Können Sie erreichen mit unter-Abfragen
select extract(xmltype(xml), '//fax/text()').getStringVal() from mytab;
select extractvalue(xmltype(xml), '//fax') from mytab;
InformationsquelleAutor Ravi
Können Sie versuchen, die Schaffung DBMS_XMLPARSER.parser-Objekt aus CLOB-XML und erhalten Sie einen DBMS_XMLDOM.DOMDocument-Objekt aus. Dann nutzen Sie DBMS_XMLDOM Paket Methoden, um den Wert eines Knotens.
Dann verwenden Sie die unten Methoden zum extrahieren von Knoten-Wert
DBMS_XMLDOM.getElementsByTagName(doc_, 'Knotenname');
DBMS_XMLDOM.GetNodeValue(node_obj_);
Finden Sie mehr über DBMS_XMLDOM Methoden hier.
InformationsquelleAutor S.Roshanth
Im Falle von :
Abfrage :
InformationsquelleAutor O'sama