我有以下XML
<root>
<business name="LM" id="1" total_pes="0">
</business>
<business name="KO" id="354" total_pes="0">
</business>
<business name="TUI" id="889" total_pes="0">
</business>
</root>
我想用其他表tbl_logs的记录数更新total_pes属性:
id | log
1 | A
1 | A
1 | A
354 | A
354 | A
889 | A
我的输出XML是这样的:
<root>
<business name="LM" id="1" total_pes="3">
</business>
<business name="KO" id="354" total_pes="2">
</business>
<business name="TUI" id="889" total_pes="1">
</business>
</root>
这就是我已经完成的事情:
DECLARE @total_pes_new int
DECLARE @ID INT
SET @ID = (SELECT TOP 1 ID FROM @IDS)
WHILE @ID IS NOT NULL
BEGIN
set @total_pes_new = ( SELECT COUNT(A.PES) FROM TBL A
WHERE A.ID = @ID)
SET @XML.modify('replace value of (/root/business[@id=sql:variable("@ID")]/@total_pes)[1] with sql:variable("@total_pes_new")')
SET @ID = (SELECT TOP 1 ID FROM @IDS WHERE ID > @ID)
END
我会遇到这个循环的问题。任何人都可以帮我做一个更好的解决方案吗?
韩国社交协会
答案 0 :(得分:0)
如果您的XML位于XML数据库中,那么您还可以选择使用XQuery Update,请参阅http://www.w3.org/TR/xquery-update-10/。