Как и предполагает заголовок, я пытаюсь параметризовать XPath для метода modify () для столбца данных XML в SQL Server, но сталкиваюсь с некоторыми проблемами.
Пока у меня есть:
DECLARE @newVal varchar(50)
DECLARE @xmlQuery varchar(50)
SELECT @newVal = 'features'
SELECT @xmlQuery = 'settings/resources/type/text()'
UPDATE [dbo].[Users]
SET [SettingsXml].modify('
replace value of (sql:variable("@xmlQuery"))[1]
with sql:variable("@newVal")')
WHERE UserId = 1
со следующей структурой XML:
<settings>
...
<resources>
<type> ... </type>
...
</resources>
...
</settings>
, которая затем генерирует эту ошибку:
XQuery [dbo.Users.NewSettingsXml.modify()]: The target of 'replace' must be at most one node, found 'xs:string ?'
Теперь я понимаю, чтоМетод изменения не должен быть способен принимать строку в качестве пути, но есть ли способ добиться этого с помощью динамического SQL?
О, кстати, я использую SQL Server 2008 Standard 64-немного, но любые запросы, которые я пишу, должны быть совместимы со стандартом 2005 года.
Спасибо!