1

このコードが機能しています

UPDATE UserData
SET Data.modify('delete(/UsersData/UserXml[@user_id=23445])[1]')            
WHERE Id = 11;

しかし、このコードを試すと、exがスローされます

declare @myXmlQuery nvarchar(120)
set @myXmlQuery = '/UsersData/UserXml[@user_id=23445]'

UPDATE UserData
SET Data.modify('delete(sql:variable("@myXmlQuery"))[1]')
WHERE Id = 11;

私はこの例を取得します:

メッセージ 2264、レベル 16、状態 1、行 11 XQuery [UserData.Data.modify()]: ドキュメント以外のノードのみを削除できます。「xs:string」が見つかりました

何か案は ?

ありがとう。

4

1 に答える 1

0

ハッキーな方法は次のとおりです。

DECLARE @sql NVARCHAR(MAX), @myXmlQuery nvarchar(120);

set @myXmlQuery = N'/UsersData/UserXml[@user_id=23445]'

SET @sql = N'UPDATE UserData
SET Data.modify(''delete(' + @myXmlQuery + ')[1]'')
WHERE Id = 11;';

PRINT @sql;

-- EXEC sp_executesql @sql;

XML の達人は、より実用的な答えを持って動き回ることでしょう。私はより関係的な男です。:-)

于 2012-07-17T14:48:06.960 に答える