2012-11-28 166 views
14

我想從表TRAPTABCLOB中提取使用sql的sql值,該列中的testclob列的XML存儲爲clob。使用Oracle數據庫中的SQL從XML Clob中提取數據

示例XML如下。

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

回答

21

嘗試

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

Here是sqlfiddle演示

+0

嗨..我有類似的問題。你可以幫我.SQL小提琴不起作用。 – Teja

+0

@SOaddict,它現在可以工作... –

+0

現在很好用..我如何提取整個內容並將其正確存儲到一個文件中? – Teja

2

這應該工作

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

我承擔的**只是爲彰顯?

+0

不工作 - 讓ORA-00932錯誤。 A.B.Cade的解決方案非常完美。 – user1859050

相關問題