I have an xml like below. There are many nodes b4 and after this but they are irrelevant.
<Parent>
<ServiceTag>sometag</ServiceTag>
<Addl_Payloads>
<Addl_PayloadCount>1</Addl_PayloadCount>
<Addl_Payload>
<Attrib Name="TYPE" Seq="1" Value="LICENSE"> </Attrib>
<Attrib Name="ENTITLEMENT_ID" Value="sdfsfdsadfaasdfsadf1"></Attrib>
</Addl_Payloads>
</Parent>
How can I build a query in Oracle 11g to read values only when there is Attrib name=ENTITLEMENT_ID
. I tried something like this but this gives me value column empty
basically I want to read = 'sdfsfdsadfaasdfsadf1'
if it exists
SELECT s.doc_id,
extractValue(x.column_value, '/Parent/ServiceTag') as ST,
extractValue(x.column_value,
'/Parent/Addl_Payloads/Addl_Payload/Attrib[@Name="ENTITLEMENT_ID"]') as Value
from LKMLOG.LKM_ORIG_ASB_MSG s
, TABLE(
XMLSequence(
xmltype( s.ASB_XML).extract(
'//Payload/PPIDInfoRequestMessage/PPIDData/Parent'
)
)
) x
where s.doc_id in (somevalues);