Удалить узел XML из в SQL Server 2008 - PullRequest
0 голосов
/ 29 октября 2019

Я пытаюсь удалить один из узлов XML из SQL Server 2008. Однако я получаю это сообщение об ошибке

Невозможно вызвать Mutator 'modify ()' on 'Rates'с нулевым значением

Я использую этот код:

declare @var nvarchar(256) = '7'

update tablename
set Rates.modify('delete (/rts/rt[@eId=sql:variable("@var")])[1]')

Данные XML:

<rts>
    <rt jRt="30" eId="1" />
    <rt jRt="29" eId="2" />
    <rt jRt="29" eId="3" />
    <rt jRt="29" eId="4" />
    <rt jRt="29" eId="5" />
    <rt jRt="29" eId="6" />
    <rt jRt="29" eId="7" />
    <rt jRt="29" eId="8" />
</rts>

1 Ответ

0 голосов
/ 29 октября 2019

Ваш оператор UPDATE не имеет предложения WHERE - действительно ли вы действительно хотите запустить UPDATE против каждой строки в вашей таблице?

Проблема возникает, если в вашей таблице есть строка, содержащая NULL в столбце Rates XML. Поэтому - вы должны проверить на NULL , чтобы избежать этой ошибки:

update tablename
set Rates.modify('delete (/rts/rt[@eId=sql:variable("@var")])[1]')
where Rates is not null
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...