Обновление атрибута XML в столбце XML SQL Server

Я пытаюсь обновить узел в моем XML, который хранится в столбце XML SQL Server, строка ниже работает, если мой XML находится в элементе XML, но теперь мне как-то нужно изменить его на атрибуты XML, видимо, строка становится недействительной после изменения.

Работает для XMLElement:

UPDATE [Customers] SET voucherXML.modify('replace value of (/ArrayOfCampaignVoucher/CampaignVoucher/Qty/text())[1] with "50"') WHERE voucherXML.value('(/ArrayOfCampaignVoucher/CampaignVoucher/VouCode)[1]', 'nvarchar(50)') = @VoucherCode 

Я попытался изменить этот оператор, как это, но не повезло, никаких ошибок, но значения QTY не получают изменения в значение @NewQuantity :

 UPDATE [Customers] SET voucherXML='<ArrayOfCampaignVoucher xmlns:xsd="http://www.w3.org/2001/XMLSchema" Qty="' + CAST(@NewQuantity AS NVARCHAR(16)) + '" />' WHERE voucherXML.value('(/CampaignVoucher/VouCode)[1]', 'nvarchar(50)') = @VoucherCode 

Вот как мой XML выглядит в столбце XML SQL Server:

 <ArrayOfCampaignVoucher xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <CampaignVoucher VouCode="Vouc001" Qty="16" /> <CampaignVoucher VouCode="Vouc002" Qty="18" /> <CampaignVoucher xsi:nil="true" /> </ArrayOfCampaignVoucher> 

Вы должны использовать функции XQuery, а не объединять XML таким образом …

Попробуйте это вместо этого:

 DECLARE @newquantity INT = 55 UPDATE dbo.Customers SET voucherXML.modify('replace value of (/ArrayOfCampaignVoucher/CampaignVoucher[@VouCode="Vouc002"]/@Qty)[1] with sql:variable("@NewQuantity") ') 

Это работает для меня – атрибут Qty узла с VouCode="Vouc002" обновляется до значения, определенного мной в переменной SQL

Обновление: чтобы вставить новую запись <CampaignVoucher> , используйте XQuery примерно так:

 UPDATE dbo.Customers SET voucherXML.modify('insert <CampaignVoucher VouCode="Vouc003" Qty="42" /> as last into (/ArrayOfCampaignVoucher)[1]') 
  • XQuery, где проверяется проблема с SQL Query
  • XQUERY SQL - Как передать отдельные элементы (узлы) в качестве переменных?
  • T-SQL, недопустимый столбец XQuery
  • XQuery SUM после округления значения
  • Получить значения узлов XML с возвратом каретки с использованием SQL
  • Изменение значений XML, идентифицированных с помощью кросс-приложения
  • Вставка значения, которое выходит за пределы XML при использовании xQuery в хранимой процедуре в MS SQL Server
  • Процессор запросов sql xml
  • Прочитать дочерний узел вместе с его родительским атрибутом из XML на SQL-сервере
  • Заменить имя атрибута в SQL Server XML
  • Получить данные из родительского xml, который имеет разные дочерние xml-теги на SQL-сервере
  • Interesting Posts

    Разница между двумя SELECT

    Как я могу запросить столбец XML SQL Server и вернуть все значения для определенного узла?

    Подсчет дней между несколькими стоп-стопами в течение календарного периода

    Как преобразовать VARCHAR в число с помощью CASE?

    Обработка ошибки прерывания базы данных в узле-mssql

    Возможно восстановление данных SQL Azure?

    Бэкэнд как услуга (BaaS) или старый SQL-сервер для удаленной базы данных Mobile APP

    Запрос, который учитывает пары с одинаковыми значениями в зависимости от третьего столбца

    Отправка почты SMTP в SQL Server 2008 R2 Express

    Сообщение об ошибке «Не удалось найти хранимую процедуру» при выполнении хранимой процедуры

    Лучший список для заказа при заказе

    SQL Server – замените OR, когда JOINING на неиндексированном поле

    Разбиение страниц на две таблицы в SQL Server

    Получайте записи с одним и тем же «текстом», но разные «коды»,

    Обновление нескольких столбцов из другой таблицы с использованием SQL Server 2005

    Давайте будем гением компьютера.