【发布时间】:2019-03-30 14:19:48
【问题描述】:
我想根据所选计划更新 Isselected 计划数据
SET @DataXml.modify(' replace value of (/*/Plans/Plan[sql:variable("@PlanID")]/Details/IsSelected/text())[1] with sql:variable("IsSelectedValue")')
但是上面的查询总是更新第一个。
<Plans>
<Plan>
<Details>
<IsSelected>true</IsSelected>
</Details>
</plan>
<Plan>
<Details>
<IsSelected>false</IsSelected>
</Details>
</plan>
<Plan>
<Details>
<IsSelected>false</IsSelected>
</Details>
</plan>
</Plans>
if((SELECT count(Col.value('(Details)[1]', 'nvarchar(max)')) AS Selected FROM @DataXml.nodes('Options/Option') AS Tbl(Col)) > 1)
BEGIN
SET @DataXml.modify(' replace value of (/*/Options/Option[sql:variable("@OptionID")]/Details/IsSelectedValue/text())[1] with sql:variable("@IsSelectedValue")')
END
ELSE
BEGIN
SET @DataXml.modify(' replace value of (/*/Options/Option/Details/IsSelectedValue/text())[1] with sql:variable("@IsSelectedValue")')
END
如果我可以像上面的数据一样获得节点计数,它应该返回计数 3,我可以设法解决这个问题。
【问题讨论】:
标签: sql-server xml sql-server-2008