SQL Server 2005 で XQuery を使用して、列に保存された xml を更新しようとしています。更新する必要があるデータのサンプルを次に示します。
<Length>3</Length>
<Width>5</Width>
<Depth>6</Depth>
<Area xsi:nil="true" />
<Volume xsi:nil="true" />
面積と体積を別のテーブルの値に設定する必要があります。更新用の CTE を作成しています。省略したロジックは他にもありますが、CTE に更新用の正しいデータが含まれていることを確認しました。
;with Volume (DocumentID, Volume) As
(
Select DocumentID, Volume from tbl
)
次の XQuery SQL ステートメントを使用してテーブルを更新しようとしています。
UPDATE tbl_Archive
SET XML.modify(' declare namespace x="http://www.redacted.com";
replace value of (/x:Document/x:Volume/text())[1]
with sql:column("Volume.Volume")')
From Volume where volume.documentID = tbl_Archive.DocumentID
影響を受けるのは 1 行ですが、XML を見ると変更されておらず、動作させるために何を修正する必要があるかわかりません。それが違いを生む場合、ノードは型指定されていません。