2012-11-28 44 views
14

Desidero estrarre il valore di Decision utilizzando SQL dalla tabella TRAPTABCLOB che dispone di colonna testclob con XML memorizzato come clob.Estrarre i dati da XML Clob utilizzando SQL dal database Oracle

Esempio di XML come di seguito.

 <?xml version="1.0" encoding="UTF-8"?> 
<DCResponse> 
    <Status>Success</Status> 
    <Authentication> 
     <Status>Success</Status> 
    </Authentication> 
    <ResponseInfo> 
     <ApplicationId>5701200</ApplicationId> 
     <SolutionSetInstanceId> 
         63a5c214-b5b5-4c45-9f1e-b839a0409c24 
        </SolutionSetInstanceId> 
     <CurrentQueue /> 
    </ResponseInfo> 
    <ContextData> 
     <!--Decision Details Start--> 
     <Field key="SoftDecision">A</Field> 
     <Field key="**Decision**">1</Field> 
     <Field key="NodeNo">402</Field> 
     <Field key="NodeDescription" /> 
     <!--Decision Details End--> 
     <!--Error Details Start--> 
     <Field key="ErrorResponse"> 
      <Response> 
       <Status>[STATUS]</Status> 
       <ErrorCode>[ERRORCODE]</ErrorCode> 
       <ErrorDescription>[ERRORDESCRIPTION]</ErrorDescription> 
       <Segment>[SEGMENT]</Segment> 
      </Response> 
     </Field> 
     <Field key="ErrorCode">0</Field> 
     <Field key="ErrorDescription" /> 
    </ContextData> 
</DCResponse> 

risposta

21

Prova

SELECT EXTRACTVALUE(xmltype(testclob), '/DCResponse/ContextData/Field[@key="Decision"]') 
FROM traptabclob; 

Here è una demo sqlfiddle

+0

Ciao .. Sto avendo un problema simile. Mi aiuti. L'SQL Fiddle non funziona. – Teja

+0

@SOaddict, ora funziona ... –

+0

Ottimo funziona ora .. Come posso estrarre l'intero contenuto e raddrizzarlo su un file? – Teja

2

Questo dovrebbe funzionare

SELECT EXTRACTVALUE(column_name, '/DCResponse/ContextData/Decision') FROM traptabclob; 

ho assunto l'** sono stati solo per evidenziare?

+0

Non funziona - ottenere Ora-00932 errore. La soluzione di A.B.Cade ha funzionato perfettamente. – user1859050