Reputation: 399
I want to extract the value of Decision using sql from table TRAPTABCLOB having column testclob with XML stored as clob.
Sample XML as below.
<?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>
Upvotes: 19
Views: 129394
Reputation: 31
If you're having problem with XMLTYPE phrase, then try this:
SELECT EXTRACTVALUE(XMLPARSE(DOCUMENT textClob), '/DCResponse/ContextData/Field[@key="Decision"]') FROM traptabclob;
This is usually because the column textClob has an invalid format of XML. XMLParse parses and generates an XML instance from the evaluated result of value_expr. See XMLPARSE, Oracle Database Online Documentation 11g, Release 2 (11.2)
Upvotes: 0
Reputation: 16905
Try
SELECT EXTRACTVALUE(xmltype(testclob), '/DCResponse/ContextData/Field[@key="Decision"]')
FROM traptabclob;
Here is a sqlfiddle demo
Upvotes: 27
Reputation: 302
This should work
SELECT EXTRACTVALUE(column_name, '/DCResponse/ContextData/Decision') FROM traptabclob;
I have assumed the ** were just for highlighting?
Upvotes: 2