2013-12-16 4 views
1

Я хочу извлечь значение решения с использованием sql из таблицы TRAPTABCLOB, имеющей столбец testclob с XML, хранящийся как clob. В DB2Извлечение данных из XML Clob с использованием SQL из db2

Пример 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> 

ответ

4

Одна из хороших вещей об использовании XMLTABLE() является то, что она производит выражение, которое может быть использовано в качестве подзапроса или присоединились к столу или другой SQL выражение.

SELECT x.decision 
FROM traptabclob, XMLTABLE(
    '$d/DCResponse/ContextData[1]' PASSING XMLPARSE(DOCUMENT testclob) AS "d" 
    COLUMNS 
    DECISION CHAR(1) PATH 'Field[@key="**Decision**"][1]' 
) AS x 
; 
+0

'PASSING XMLPARSE (DOCUMENT testclob) AS" d "' может быть упрощено до 'testclob' – Hogan

Смежные вопросы