【问题标题】:PL SQL - CLOB (XML) data fetching - All the data from List and Struct of XML tags is to be fetchedPL SQL - CLOB (XML) 数据获取 - 从 XML 标签的 List 和 Struct 中获取所有数据
【发布时间】:2016-06-24 04:10:02
【问题描述】:
<ENVVAR CSIM:dt="list">
<item CSIM:dt="struct">
<Category dt:dt="string">ENV</Category>

<Name dt:dt="string">ABC</Name>
<Value dt:dt="string">abc</Value>
</item>
<item CSIM:dt="struct">
<Category dt:dt="string">ENV</Category>
<Name dt:dt="string">XYZ</Name>
<Value dt:dt="string">xyz</Value>
</item>
</ENVVAR CSIM>

我想获取数据为

Name   Value
ABC    abc
XYZ    xyz

我正在使用

extractvalue (ABC.IOXML, '/ENVVAR/item[1]/Name') as ParaName
extractvalue (ABC.IOXML, '/ENVVAR/item[1]/Value') as ParaValue 

仅获取 item[1] 值。但我想获取项目结构中的所有值。任何帮助将不胜感激。谢谢。 PS:我什至尝试过Extract 而不是extractvalue,但它以标签格式提供数据。

【问题讨论】:

  • 请向我们展示您的完整存储过程

标签: database oracle plsql clob lob


【解决方案1】:

你可以使用XQuery,特别是这里的XMLTable:

select x.*
from abc
cross join xmltable (
  '/ENVVAR/item'
  passing xmltype(abc.ioxml)
  columns name varchar2(20) path 'Name',
    value varchar2(20) path 'Value'
) x;

您需要在 XML 文档中正确声明 CSIM 命名空间。添加了 xmlns 的演示:

with abc(ioxml) as (
  select '<ENVVAR CSIM:dt="list" xmlns:CSIM="http://www.example.com" xmlns:dt="http://www.example.com">
<item CSIM:dt="struct">
<Category dt:dt="string">ENV</Category>
<Name dt:dt="string">ABC</Name>
<Value dt:dt="string">abc</Value>
</item>
<item CSIM:dt="struct">
<Category dt:dt="string">ENV</Category>
<Name dt:dt="string">XYZ</Name>
<Value dt:dt="string">xyz</Value>
</item>
</ENVVAR>' from dual
)
select x.*
from abc
cross join xmltable (
  '/ENVVAR/item'
  passing xmltype(abc.ioxml)
  columns name varchar2(20) path 'Name',
    value varchar2(20) path 'Value'
) x;

NAME                 VALUE              
-------------------- --------------------
ABC                  abc                 
XYZ                  xyz                 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-21
    • 2015-09-08
    • 2021-05-24
    • 1970-01-01
    • 2018-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多