Как табличные функции SQL Server сообщают об ошибках? - PullRequest
2 голосов
/ 23 февраля 2011

Когда я запрашиваю динамическое административное представление системы SQL Server 2008, которое реализовано в виде табличной функции и возвращает пустой набор результатов, как я могу сказать, что причиной пустого набора результатов является то, что в функция, а затем, что это за ошибка?

Ответы [ 2 ]

5 голосов
/ 23 февраля 2011

Они не.Вы не можете использовать THROW или RAISERROR внутри функций T-SQL.Некоторые разработчики вынуждают делить на 0, чтобы вызвать ошибку внутри UDF.Это работает нормально, но иногда сбивает с толку бедную душу, которая вынуждена исследовать ошибку деления на 0, возникающую, видимо, из ниоткуда.

3 голосов
/ 19 сентября 2016

Существует гораздо более полезный способ вызвать ошибку внутри функции в TSQL, чем выполнение деления на ноль.В нашей компании мы создаем строку (описывающую саму проблему) и преобразуем ее в строку.

if @PersonID is null
  insert into @Result values(@Right, cast('FT_AclGetAccess must never be called with @PersonID null' as int))

Это приведет к ошибке на сервере приложений, которая выглядит следующим образом:

Преобразование не удалось при преобразовании значения varchar 'FT_AclGetAccess никогда не должен вызываться с @PersonID null' в тип данных int.

Небольшая манипуляция строк на сервере приложений, и вы получаетедовольно вменяемое сообщение об ошибке для файла журнала!; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...