8

SQL Server 2012 にサンプル テーブルがあります。いくつかのクエリを実行していますが、.modify()XQuery メソッドは実行されていますが、更新されていません。

ここにテーブルがあります

XML テーブル

このために、設定を「NewTest」に更新しようとしています

XML スニペット

これは実行されますが、何も更新されません! 助けてくれてありがとう!

スニペットを更新しない

4

2 に答える 2

8

XML ドキュメントにはXML 名前空間( ) があるため、ステートメントxmlns:dev="http://www.w3.org/2001/XMLSchema"にそれを含める必要があります。UPDATE

これを試して:

;WITH XMLNAMESPACES(DEFAULT 'http://www.w3.org/2001/XMLSchema')
UPDATE XmlTable
SET XmlDocument.modify('replace value of (/Doc/@Settings)[1] with "NewTest"')
WHERE XmlId = 1
于 2013-05-13T04:24:57.633 に答える
3

更新構文で名前空間を宣言する必要があります。以下の構文を試してください

Declare @Sample table
(xmlCol xml)

Insert into @Sample
values
('<dev:Doc xmlns:dev="http://www.w3.org/2001/XMLSchema" 
                       SchemaVersion="0.1" Settings="Testing" Ttile="Ordering">
        <Person id="1">
            <FirstName>Name</FirstName>
        </Person>
      </dev:Doc>')
 Select * from @Sample
 Update @Sample
 SET xmlCol.modify(
                  'declare namespace ns="http://www.w3.org/2001/XMLSchema";
                   replace value of (/ns:Doc/@Settings)[1]
                   with "NewTest"')

 Select * from @Sample
于 2013-05-13T04:39:30.053 に答える