通过updatexml更新CLOB XML

问题描述 投票:0回答:1

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

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

UPDATE XYZ SET request_xml = UPDATEXML(xmltype(request_xml),'Parameters / Parameter [@ Name =“ABC”] / @ Value',400,'xmlns:n0 =“http://www.iQWE.com/LKJ”' ).getClobVal()其中transaction_id ='2017051907471800000000187725';

sql xml oracle updatexml
1个回答
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,所以你可能想调查实现这个的其他方法。

© www.soinside.com 2019 - 2024. All rights reserved.