2012-11-28 48 views
14

Chcę wyodrębnić wartość decyzji przy użyciu sql z tabeli TRAPTABCLOB o kolumna testclob z XML przechowywane jako clob.Wyodrębnij dane z Clob XML przy użyciu SQL z bazy danych Oracle

Przykładowy XML jak poniżej.

 <?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> 

Odpowiedz

21

Spróbuj

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

Here jest sqlfiddle demo

+0

Witam .. Mam podobny problem.Can możesz mi pomóc. The SQL Fiddle doesnt work. – Teja

+0

@SOaddict, działa teraz ... –

+0

Wspaniale działa teraz. Jak mogę wyodrębnić całą zawartość i przekierować ją do pliku? – Teja

2

To powinno działać

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

jakie przyjęto ** były tylko do podkreślenia?

+0

nie działa - coraz Ora-00932 błąd. Rozwiązanie A.B.Cade działało idealnie. – user1859050