2016-06-27 26 views
0
<record> 
     <field> 
     <fieldName>employee id</fieldName> 
     <fieldValue>2000001</fieldValue> 
     </field> 
     <field> 
     <fieldName>employee name</fieldName> 
     <fieldValue>pankaj kumar</fieldValue> 
     </field> 
    </record> 

Die extrahierten Daten so sein sollte:Ich versuche, Daten in einer Spalte der Tabelle mit dem Datentyp <XMLTYPE> abgerufen werden. Ich habe alle Feldnamen mit den Werten erhalten unter Verwendung von Verfahren/query

Mitarbeiter id | Name des Mitarbeiters
2000001 | pankaj kumar

Antwort

0
CREATE TABLE houses(
    HOUSE_ID NUMBER(4), 
    house_add XMLTYPE, 
    HOUSE_NAME VARCHAR2(35) 
); 

Einfügen des Wertes in die Tabelle;

INSERT INTO houses VALUES 
    (100, XMLType('<house whNo="100"> 
       <Building>Owned</Building> 
       </house>'), 'housename1'); 

Um Fech: -

SELECT house_add FROM HOUSES W; 

o/p: - <house whNo="100"> <BUILDING>OWNED</BUILDING> </house>

Gebäude Detail zu holen: -

SELECT 
    w.house_add.extract('/house/Building/text()').getStringVal()  "Building" 
    FROM HOUSES W; 

o/p: -ige

Für Ihren Fall: -

WITH T AS 
(select xmltype('<?xml version = "1.0"?> 
    <record> 
     <FIELD> 
     <Field Name="employee id" fieldValue="2000001"/> 
     </FIELD> 
     <FIELD> 
     <Field Name="employee name" fieldValue="pankajkumar"/> 
     </FIELD> 
    </record> 
') XML FROM DUAL 
) 
SELECT Y.NAME, Y.VALUE 
FROM T  , 
         XMLTABLE('/record/FIELD/Field' 
       PASSING T.XML 
       COLUMNS NAME VARCHAR2(20) PATH '@Name', 
       VALUE VARCHAR2(20) PATH '@fieldValue' 
       )Y 

Ausgang: -

NAme    Value 

employee id  2000001 
employee name pankajkumar 

Dies wird Ihnen helfen !!

+0

Ich verwende dies als