【问题标题】:Loop on XML with SQL (XMLType)使用 SQL (XMLType) 在 XML 上循环
【发布时间】:2023-03-08 05:16:02
【问题描述】:

我从请求中得到以下 XML:

<records>
  <record>
    <field name="code" value="1"/>
    <field name="dexcription" value="MyName"/>
    <field name="id" value="666">
  </record>
  <record>
    <field name="code" value="2"/>
    <field name="dexcription" value="MyName"/>
  </record>
  ...
</records>

第一条记录处理成功,返回元素“id”;第二个不是,所以没有这个元素就返回了。

我需要编写一个基于返回这两列(“code”和“id”)的 XML SQL 查询,但只返回成功处理的记录。我尝试使用 XMLType,但仍然失败。谁能帮帮我?

在此先感谢,并为我的“谷歌搜索”英语感到抱歉。

【问题讨论】:

  • 不清楚你想做什么,你尝试了什么,你看到了什么行为。也许一些示例代码以及您遇到的错误会有所帮助。

标签: xml oracle plsql xmltype


【解决方案1】:

我找到了解决办法:

SELECT EXTRACT (COLUMN_VALUE, '/record/field[@name="code"]/@value').GETSTRINGVAL () AS CODE,
       EXTRACT (COLUMN_VALUE, '/record/field[@name="id"]/@value').GETSTRINGVAL () AS ID
  FROM TABLE (XMLSEQUENCE (XMLTYPE (:XXML).EXTRACT ('/records/record')))
 WHERE EXTRACT (COLUMN_VALUE, '/record/field[@name="id"]') IS NOT NULL

【讨论】:

  • 如果您使用的是 Oracle10 或更高版本,您可能希望切换到 XMLTable(...) 而不是 TABLE(XMLSequence(...))。更短更清晰的语法。
猜你喜欢
  • 2010-11-02
  • 2014-07-22
  • 2019-07-07
  • 1970-01-01
  • 2017-01-01
  • 2018-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多