sql - 谁能帮助如何使用 SQL 在 XML (CLOB) 中添加数组资源?
问题描述
<?xml version="1.0" encoding="UTF-8"?>
<Values version="2.0">
<record name="header" javaclass="com.wm.util.Values">
<value name="legalEntity">27</value>
<value name="globalId">a8a49f5d-70bb-421e-99f2-bb4065a46538</value>
<value name="priority">5</value>
<value name="requestor">COP</value>
</record>
<record name="body" javaclass="com.wm.util.Values">
<array name="orderItem" type="record" depth="1">
<record javaclass="com.wm.util.Values">
<value name="orderItemId">OS-1229460</value>
<array name="childOrderItem" type="record" depth="1">
<record javaclass="com.wm.util.Values">
<value name="orderItemId">280973171</value>
<array name="relatedOrderItem" type="record" depth="1">
<record javaclass="com.wm.util.Values">
<value name="orderType">CUSTOMER_ORDER</value>
<value name="orderItemId">280973171</value>
<value name="orderItemDataOwner">Clarify</value>
</record>
</array>
<value name="operationType">CANCEL</value>
<value name="operationSubType">DEFAULT</value>
<value name="status"> </value>
<value name="subStatus"> </value>
<value name="orderItemDateTime">2020-12-08T17:00:52</value>
<value name="articleNumber">STANDAARDSIMKAART</value>
<array name="childOrderItem" type="record" depth="1">
<record javaclass="com.wm.util.Values">
<value name="orderItemId">280973179</value>
<value name="operationType">CANCEL</value>
<value name="operationSubType">DEFAULT</value>
<value name="status"> </value>
<value name="subStatus"> </value>
<record name="product" javaclass="com.wm.util.Values">
<value name="productInstanceId">280973179</value>
<value name="productSpecificationId">SE555</value>
<value name="productSpecificationName">PRIVATE_APN</value>
<value name="productDescription">PRIVATE_APN</value>
<value name="productType">PRIVATE_APN</value>
<value name="manualOverride">false</value>
</record>
</record>
</array>
</record>
</array>
</record>
</array>
</record>
</Values>
更准确地说,我必须在手动覆盖行之后添加这个数组资源
<array name="productInstanceCharacterstic" type="record" depth="1">
<record javaclass="com.wm.util.Values">
<value name="name">APNProductInstanceID</value>
<value name="value">281606343</value>
</record>
<record javaclass="com.wm.util.Values">
<value name="name">UseStaticIP</value>
<value name="value">No</value>
</record>
</array>
我的代码:
UPDATE SD2_95.ORDER_DATA sgo SET sgo.ORDER_CONTENT =
(XMLSERIALIZE
(
Document
(
XMLQuery
(
'copy $tmp := . modify
(for $i in $tmp//record[@name="body"]/value[@name=]/text()
return $tmp'
PASSING XMLTYPE(sgo.ORDER_CONTENT) RETURNING CONTENT
)
) AS CLOB INDENT SIZE = 2
)
)
WHERE sgo.ORDER_ID IN
(
'OS-1151955',
)
我不确定如何实现 for 循环...请帮助
解决方案
推荐阅读
- ruby - SystemStackError:使用 Parslet 解析 SCIM 2.0 过滤器查询时
- php - 写入某些文本行后,文本区域不上传文本
- laravel-5 - 获取视图上的相关对象
- sql-server - SQL Server 外键过滤约束
- python - Tensorflow量化:数组输出没有MinMax信息
- mongodb - MongoDB 在 Mac 上使用 Homebrew 正确安装,但在命令行上键入“mongo”会出现错误:“异常:连接失败”
- scala - 如何在使用 Scala 的泛型方法中使用 TypeInformation
- javascript - 在 React Native 中的其他 .tsx 组件中使用 .tsx 组件
- amazon-web-services - 多机-多线程修改DynamoDB表中同一项的一致实现
- pandas - 如何在 Python 中使用 pct_change 计算数据框中 2 列的百分比变化