XML noobie here - 尝试快速加速SQL Server 2008中现有XML列的一次性,即时数据更新。我已经起草了以下测试代码以找出正确的语法:
DECLARE @XMLData XML
SET @XMLData = '
<Parts>
<Part>
<ID>(548753,10300)</ID>
<PartID>(1030,12014)</PartID>
<CalculatedQuantity>233</CalculatedQuantity>
<CalculatedCost>11.65</CalculatedCost>
</Part>
<Part>
<ID>(548752,10300)</ID>
<PartID>(1001,12014)</PartID>
<CalculatedQuantity>0.25</CalculatedQuantity>
<CalculatedCost>5</CalculatedCost>
</Part>
<Part>
<ID>(548751,10300)</ID>
<PartID>(1842,12014)</PartID>
<CalculatedQuantity>0.25</CalculatedQuantity>
<CalculatedCost>15</CalculatedCost>
</Part>
<Part>
<ID>(548750,10300)</ID>
<PartID>(1929,12014)</PartID>
<CalculatedQuantity>47.86</CalculatedQuantity>
<CalculatedCost>27.2271577192</CalculatedCost>
</Part>
<Part>
<ID>(548749,10300)</ID>
<PartID>(1973,12014)</PartID>
<CalculatedQuantity>0.3</CalculatedQuantity>
<CalculatedCost>2.829</CalculatedCost>
</Part>
</Parts>
'
SET @XMLData.modify ('
replace value of
(/Parts/Part[@PartID = "(1929,12014)"]/CalculatedQuantity/text())[1]
with "6.5" ');
如果我离得太远以至于它甚至都不明显,我试图仅在PartID = som值的节点中更新CalculatedQuantity的值。然而,显然我遇到了一些错误 - 当我执行此操作时没有任何变化 - 我无法找到一个很好的例子来弄清楚是什么。最终@PartID将等于sql:column以及更新量。但是现在我只想让基本语法有效。
任何帮助表示赞赏。
答案 0 :(得分:0)
你非常接近 - 事实上,你只有一个角色。 @PartID
匹配名为&#34; PartID&#34;的属性,而不是元素。它应该是这样的:
SET @XMLData.modify ('
replace value of (/Parts/Part[PartID = "(1929,12014)"]/CalculatedQuantity/text())[1]
with "6.5"
');