我 有 一 个 保存 xml 的 oracle clob 。
<acctInfo>
<acctCalculations>
<acctCalculation>
<acctCalculationDate>2020-10-20</acctCalculationDate>
<HouseholdIncome>1960.00</HouseholdIncome>
<NumberOfOccupants>4</NumberOfOccupants>
<acctLevel>1</acctLevel>
<incomeVerificationDate>2020-10-20</incomeVerificationDate>
<incomeVerifiedBy>CJOE</incomeVerifiedBy>
</acctCalculation>
<acctCalculation>
<acctCalculationDate>2021-01-15</acctCalculationDate>
<HouseholdIncome>1960.00</HouseholdIncome>
<NumberOfOccupants>4</NumberOfOccupants>
<acctLevel>1</acctLevel>
<incomeVerificationDate>2020-10-20</incomeVerificationDate>
<incomeVerifiedBy>CJOE</incomeVerifiedBy>
</acctCalculation>
<acctCalculation>
<acctCalculationDate>2021-10-01</acctCalculationDate>
<HouseholdIncome>0</HouseholdIncome>
<NumberOfOccupants>4</NumberOfOccupants>
<acctLevel>1</acctLevel>
<incomeVerificationDate>2021-10-01</incomeVerificationDate>
<incomeVerifiedBy>BYAJRIS</incomeVerifiedBy>
</acctCalculation>
</acctCalculations>
</acctInfo>
中 的 每 一 个
我 需要 在 <acctCalculationDate>2021-10-01</acctCalculationDate>
之后 添加 一 个 类似 <NetHouseholdIncome>15</NetHouseholdIncome>
的 节点 - 因为 它 是 最 大 计算 日期
所以 看 起来
<acctCalculation>
<acctCalculationDate>2021-10-01</acctCalculationDate>
* <NetHouseholdIncome>15</NetHouseholdIncome>*
<HouseholdIncome>0</HouseholdIncome>
<NumberOfOccupants>4</NumberOfOccupants>
<acctLevel>1</acctLevel>
<incomeVerificationDate>2021-10-01</incomeVerificationDate>
<incomeVerifiedBy>BYAJRIS</incomeVerifiedBy>
</acctCalculation>
格式
所以 我 认为 类似 于 bellow 的 东西 应该 可以 工作 , 但是 我 似乎 找 不到 xpath 应该 是 什么 , 以 获得 我 想 插入 的 同一 级别 节点 的 最 大 值 。
select
to_clob(
APPENDCHILDXML(
xmltype(field_Data_area),
'*/acctInfo/acctCalculations/acctCalculation[3]*',
xmltype('<NetHouseholdIncome>15</NetHouseholdIncome>')
)
)
格式
我 还 考虑 过 使用 " position for ordinality " 将 原始 xml 传递 到 xmltable 中 , 以 获得 最 大 值 的 节点 , 并 在 该 节点 处 进行 更新 , 但 我 不 确定 当 我 在 update xml 语句 中 使用 position number 时 是否 会 保持 相同 的 节点 计数
select
AcctCalculationDate, position
from
data_area
XMLTABLE ('/acctInfo/acctCalculations/acctCalculation' --id row in table
passing xmltype('FIELD_DATA_AREA')
columns
position for ordinality,
acctCalculationDate varchar2(12) path 'acctCalculationDate'
) xml
格式
我 尝试 查找 xmlpath 查询 以 获取 最 大 值 节点 。 并 考虑 使用 两 个 查询 , 一 个 查询 获取 节点 编号 , 然后 使用 一 个 查询 通过 该 节点 更新 , 但 我 不 确定 节点 编号 是否 会 保持 一致 。 查找 语法 以 获取 最 大 节点 或 ... 只是 我 应该 使用 的 策略 来 插入 这些 值
1条答案
按热度按时间gorkyyrv1#
中 的 每 一 个
如果 您 的 data _ area 表 中 只有 一 个 clob , 那么 我 就 可以 使用 它 。