2013-04-29 74 views
0

在Oracle 11,我有這樣的查詢:的XMLTable - XPath的 '空()' 替代Oracle 10g中

SELECT XML_TABLE.* 
    FROM XML_DATA, 
     XMLTABLE('//root' PASSING XML_DATA.XML COLUMNS 
       NAME VARCHAR2 (50) PATH '//root/name/text()', 
       HAS_DOCUMENT NUMBER PATH 'empty(//root/document)') XML_TABLE 

但XPATH '空(//根/文件)' 在不工作10g數據庫。

什麼是替代方案?我嘗試使用'count(// root/document)'(XPATH 1.0支持),但也不起作用。

在此先感謝。

回答

0

我做了一個解決方法。

XML:

<root> 
    <name>text</name> 
    <document id="1"> 
    <other_tags></other_tags> 
    </document> 
</root> 

SQL:

SELECT XML_TABLE.NAME, 
     DECODE (XML_TABLE.FIRST_ID, NULL, 0, 1) AS HAS_DOCUMENT 
    FROM XML_DATA, 
    XMLTABLE('//root' PASSING XML_DATA.XML COLUMNS 
      NAME VARCHAR2 (50) PATH '//root/name/text()', 
      FIRST_ID NUMBER PATH '//root/document[position()=1]/@id') XML_TABLE 

這是不漂亮,我承認。但它的工作。