SQL Ошибка сервера: результат выражения 'text ()' статически 'пуст' - PullRequest
0 голосов
/ 08 мая 2020

Если кто-нибудь может помочь, это было бы здорово, потому что я потратил несколько часов и не знаю, как это исправить ...

У меня есть один существующий код (насколько я понимаю, он пытается прочитать XML из поля таблицы dbo):

with usluga_list as (
    --EvnUslugaList
)
select top 1
    cast(doc.EvnXml_Data.query('data/@XmlDataSection_SysNick/text()') as nvarchar(max)) as value
from 
    usluga_list u
    cross apply (
        select top 1 *
            from v_EvnXml with(nolock)
        where u.EvnUsluga_id = Evn_id
            order by EvnXml_insDT desc
    ) doc
order by
    EvnXml_insDT --SqlOrderType_SysNick

При запуске этого кода я получаю следующую ошибку:

Номер ошибки: 42000/2377 [Microsoft] [ODB C Драйвер 17 для SQL Server] [SQL Server] XQuery [do c .EvnXml_Data.query ()]: результат выражения 'text ()' статически 'пуст'

Ошибка выдает сниппет:

doc.EvnXml_Data.query('data/@XmlDataSection_SysNick/text()')

, но как это предотвратить или проверить на null и вывести другое значение, я не знаю.

Нужен SQL гуру серверов!

1 Ответ

2 голосов
/ 08 мая 2020

Попробуйте заменить эту строчку:

cast(doc.EvnXml_Data.query('data/@XmlDataSection_SysNick/text()') as nvarchar(max)) as value

На эту:

doc.EvnXml_Data.value('(data/@XmlDataSection_SysNick)[1]', 'nvarchar(max)') as value
...