首页 > 解决方案 > Oracle XMLTABLE,具有属性的根

问题描述

甲骨文 12c。

我有查询和 XML:

 SELECT xt.*
   from  xmltable('/root/persons/person'
         passing xmltype('<root xmlns="import">
  <persons>
    <person>
       <id>John Doe</id>
    </person>
    <person>
       <id>Donald Duck</id>
    </person>
  </persons>
</root>')
         COLUMNS 
           id        VARCHAR2(10)  PATH 'id'
         ) xt

它不工作。如果我删除 xmlns="import" 那么一切正常。我试图添加:

xmltable('/root[@xmlns="import"]/persons/person'

仍然无法正常工作。难道我做错了什么?

标签: sqlxmloraclexquery

解决方案


由于提到了命名空间,因此在您的 xquery 中添加命名空间声明。试试下面的代码。有关详细信息,请参阅链接希望它有所帮助。

 SELECT xt.*
       from  xmltable( xmlnamespaces(default 'import' ),
  '//persons/person'  passing   xmltype('<root xmlns="import">
      <persons>
        <person>
           <id>John Doe</id>
        </person>
        <person>
           <id>Donald Duck</id>
        </person>
      </persons>
    </root>')
             COLUMNS 
               id        VARCHAR2(100)  PATH 'id'
             ) xt

推荐阅读