powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Invalid use of a side-effecting operator 'THROW' within a function.
10 сообщений из 10, страница 1 из 1
Invalid use of a side-effecting operator 'THROW' within a function.
    #40056107
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, доброе утро

подскажите, как свалить ошибку в UDF

как я понял, МС эту возможность посчитал излишней?
авторсообщение: 443, уровень: 16, состояние: 14, процедура: fn_get_user_id, строка: 30 [строка начала пакета: 2]
Invalid use of a side-effecting operator 'THROW' within a function.

в нетях порылся, но чего-либо внятного не нашел
...
Рейтинг: 0 / 0
Invalid use of a side-effecting operator 'THROW' within a function.
    #40056110
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
alter function dbo.test() returns int
as
begin
    throw 50000, 'error', 10
    return 0;
end;



сообщение: 443, уровень: 16, состояние: 14, процедура: test, строка: 4 [строка начала пакета: 2]
Invalid use of a side-effecting operator 'THROW' within a function.
...
Рейтинг: 0 / 0
Invalid use of a side-effecting operator 'THROW' within a function.
    #40056119
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx
как я понял, МС эту возможность посчитал излишней

МС эту возможность считает вредной в функциях ввиду наличия сайд-эффектов при использовании в запросах функций с подобными конструкциями внутри.
Свалить в ошибку - ну, можно, например, сделать приведение строки с нечисловым содержимым к числовому типу, это не запрещено.
...
Рейтинг: 0 / 0
Invalid use of a side-effecting operator 'THROW' within a function.
    #40056129
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны, спасибо

Правильно ли я понял, что нормальное внятное решение поднять ошибку с понятным текстом в udf отсутствует?

Тогда буду писать процедуру... ибо деление на ноль это совсем не то же самое, что отсутствие цены на указанную дату
...
Рейтинг: 0 / 0
Invalid use of a side-effecting operator 'THROW' within a function.
    #40056174
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx
Сон Веры Павловны, спасибо

Правильно ли я понял, что нормальное внятное решение поднять ошибку с понятным текстом в udf отсутствует?

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


Отсутствие цены - это разве ошибка?
Нет цены - нет результата.
Ошибка не нужна.
...
Рейтинг: 0 / 0
Invalid use of a side-effecting operator 'THROW' within a function.
    #40056203
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222
andreymx
Сон Веры Павловны, спасибо

Правильно ли я понял, что нормальное внятное решение поднять ошибку с понятным текстом в udf отсутствует?

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


Отсутствие цены - это разве ошибка?
Нет цены - нет результата.
Ошибка не нужна.
разные ведь бизнес-процессы есть
...
Рейтинг: 0 / 0
Invalid use of a side-effecting operator 'THROW' within a function.
    #40056240
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx,

в таких случаях ошибка должна быть определена в момент вставки или изменения данных. В базе не должно быть недостоверных данных, т.е. неполноценных, не атомарных, выходящих за требуемые диапазоны, не имеющие ключей и так далее.
Или же вносить такие данные в хранилище недостоверных или со специальной пометкой. Такие данные в рабочих процессах не должны принимать участия.
...
Рейтинг: 0 / 0
Invalid use of a side-effecting operator 'THROW' within a function.
    #40056248
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов,

К сожалению, мир, в котором я живу и работаю, не идеальный, не сферический и не в вакууме
...
Рейтинг: 0 / 0
Invalid use of a side-effecting operator 'THROW' within a function.
    #40056252
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx,

да, но что мешает
1. Выполнить валидацию
2. Добавить проверки

Понятно, что данные могли попасть в базу стараниями не слишком понимающих сотрудников, но можно принять меры, тем не менее. Для начала добавить валидацию "на входе".
...
Рейтинг: 0 / 0
Invalid use of a side-effecting operator 'THROW' within a function.
    #40056258
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx,

Как варант - CLR функция для генерации исключения.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Invalid use of a side-effecting operator 'THROW' within a function.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]