2013-06-06 134 views
0

我在數據庫中有一個XMLType列,我有一個條件來檢查子節點文本並獲取父節點的屬性。在XML我需要的數量(數量= 「3」)進行時,我有的configId(= 5621507)獲取選擇具有子節點條件的父節點的XML屬性

我的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

謝謝,這個作品完美。 –

相關問題