2017-04-14 54 views
0

我有一個帶有XMLTYPE列的表,並且XMLEXIST正常工作。帶有XMLEXISTS的Oracle XML DB不能與根XML上的xmlns一起使用XML

但是,當根元素有一個xmlns屬性XMLEXISTS沒有找到我正在尋找的記錄。

沒有xmlns屬性,XMLEXISTS可以正常工作。

怎麼了?

實施例:

<employe> 
    <employe_id>12345</employe_id> 
    <employe_name>John</employe_name> 
</employe> 

查詢:

SELECT count(*) FROM mytable 
WHERE XMLEXISTS('/employe[employe_id="12345"]' 
       PASSING xmltype_col 
    ) 

結果:1

但隨着xmlns屬性的根元素的查詢返回0

<employe xmlns="http://www.example.com/version_01_01_00"> 
    <employe_id>12345</employe_id> 
    <employe_name>John</employe_name> 
</employe> 

mytable是sche maless。

回答

0

經過大量研究,我發現瞭解決方案。

select * 
from (
select 
    xmlelement("employe", 
    XMLATTRIBUTES('www.example.com/version_01_01_00' as "xmlns") , 
     xmlforest(
     '12345' as "employe_id", 
     'John' as "employe_name" 
     ) 
    ) test 
from dual 
) x 
where XMLEXISTS(
'declare default element namespace "www.example.com/version_01_01_00"; (::) 
/employe[employe_id="12345"]' 
       PASSING test 
    )