Oracle XMLTABLE,具有属性的根

时间:2019-04-15 05:24:46

标签: sql xml oracle xquery

Oracle 12c。

我有QUERY和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'

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

1 个答案:

答案 0 :(得分:2)

由于提到了名称空间,请在xquery中添加名称空间声明。尝试下面的代码。Refer the link for more details希望对您有所帮助。

 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