2013-06-06 6 views
0

У меня есть столбец XMLType в базе данных, из которого у меня есть условие проверки текста дочернего узла и выбор атрибута родительского узла. В XML мне нужно количество (кол-во = "3"), чтобы быть извлечена, когда у меня есть ConfigId (= 5621507)Выберите атрибут XML родительского узла с условием для дочернего узла

My SQL:

select 
cfg.session_xml.extract('/ns1:configurationSession/ns1:products/ns1:product/@qty', 
'xmlns:ns1="http://abc.com/schema/service"') 
from vz_cfg2_sess_xml cfg 
where existsNode(cfg.session_xml,'/ns1:configurationSession/ns1:products/ns1:product/[ns1:configId=5621507]')=1; 

Мой XML:

<ns1:configurationSession sessionId="3543737" xmlns:ns1="http://abc.com/schema/service" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    <ns1:products> 
     <ns1:product approvalCode="N" productId="ABC" qty="1"> 
      <ns1:configId>5229719</ns1:configId> 
     </ns1:product> 
     <ns1:product approvalCode="N" productId="DEF" qty="1"> 
      <ns1:configId>5621506</ns1:configId> 
     </ns1:product> 
     <ns1:product approvalCode="N" productId="DEF" qty="3"> 
      <ns1:configId>5621507</ns1:configId> 
     </ns1:product> 
    </ns1:products> 
</ns1:configurationSession> 

ответ

0

Почему не что-то вроде этого:

select 
cfg.session_xml.extract('/ns1:configurationSession/ns1:products/ns1:product[ns1:configId=5621507]/@qty', 
'xmlns:ns1="http://abc.com/schema/service"').getstringval() 
from vz_cfg2_sess_xml cfg 

Here is a sqlfiddle demo

+0

Спасибо, это работает отлично. –

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