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

一个hacky方式是:

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 回答