Кажется, что пользовательские функции SQL Server немного (и многие другие) ограничены в этом.
Вы действительно не можете ничего с этим поделать - это (пока) просто так. Либо вы можете определить свой UDF так, чтобы вы могли сообщать о состоянии ошибки с помощью его возвращаемого значения (например, возвращая NULL в случае ошибки), либо вам почти пришлось бы вместо этого прибегнуть к написанию хранимой процедуры, которая может иметь намного больше обработки ошибок и позволяет RAISERROR и т. д.
Так что либо спроектируйте свой UDF так, чтобы он не требовал особой сигнализации об ошибках, либо вам придется перестроить свой подход, чтобы использовать хранимые процедуры (которые могут иметь несколько параметров OUTPUT и, таким образом, также могут возвращать код ошибки вместе с полезной нагрузкой данных). , если вам это нужно), или управляемый код CLR для ваших пользовательских функций.
Извините, у меня нет лучшей идеи - пока, боюсь, это ваши варианты - выбирайте.
Марк