【问题标题】:Updating CLOB XML through updatexml通过 updatexml 更新 CLOB XML
【发布时间】:2017-12-19 10:38:32
【问题描述】:

我的表中有一个带有 clobe xml 数据的标签,如下所示:

我需要将此值更新为 400。我正在执行以下操作。但它没有更新。请帮忙。

更新 XYZ SET request_xml = UPDATEXML(xmltype(request_xml), '参数/参数[@Name="ABC"]/@Value', 400,'xmlns:n0="http://www.iQWE.com/LKJ"').getClobVal() 其中transaction_id = '2017051907471800000000187725';

【问题讨论】:

标签: sql xml oracle updatexml


【解决方案1】:

您的 XPath 没有多大意义。您正在寻找一个名为Parameter 的节点,其属性名为Name,其中该属性值为'MaxLatenessAllowed'。您的 XML 文档中没有类似的内容。

您可以提供要更改的节点的完整路径,包括命名空间信息:

UPDATE dfxha_catchup_queue
SET request_xml = UPDATEXML(xmltype(request_xml),
   '/n0:CreateOrder/n0:SalesOrders/n0:SalesOrder/n0:SalesOrderLines/n0:SalesOrderLine/n0:MaxLatenessAllowed/@Value',
    400,
    'xmlns:n0="http://www.i2.com/DFX"').getClobVal()
where transaction_id = '2017051907471800000000187725';

或者为了缩短您可以在任何地方查找该节点名称,如果这在您的架构中是安全的:

UPDATE dfxha_catchup_queue
SET request_xml = UPDATEXML(xmltype(request_xml),
    '//n0:MaxLatenessAllowed/@Value',
    400,
    'xmlns:n0="http://www.i2.com/DFX"').getClobVal()
where transaction_id = '2017051907471800000000187725';

updateXML() 函数 is deprecated,因此您可能想研究实现此目的的其他方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多