По моему мнению, было бы лучше проверить значения NULL в начале вашей функции и использовать RAISERROR (нет, это не опечатка), чтобы вызвать исключение. РЕДАКТИРОВАТЬ: К сожалению, это не работает для UDF, поэтому вам придется перейти с опцией 2.
У вас также есть возможность указать "RETURNS NULL ON NULL INPUT"когда вы создаете свою функцию.Если этот флаг указан, функция вернет NULL, если любой из ее входов будет нулевым ... что-то вроде парадокса, но это может быть тем, что вы хотите.
Из MSDN CREATE FUNCTION документация (цитируемая, потому что у них нет привязки на их странице, блеф):
ВОЗВРАЩАЕТСЯ НУЛЬ НА ВХОДЕ NULL |CALLED ON NULL INPUT
Указывает атрибут OnNULLCall скалярной функции.Если не указано, по умолчанию подразумевается CALLED ON NULL INPUT.Это означает, что тело функции выполняется, даже если в качестве аргумента передается NULL.
Если в функции CLR указано RETURNS NULL ON NULL INPUT, это означает, что SQL Server может возвращать NULL, когда любой из аргументов, которые он получаетНЕДЕЙСТВИТЕЛЕН, фактически не вызывая тело функции.Если метод функции CLR, указанный в, уже имеет пользовательский атрибут, который указывает RETURNS NULL ON NULL INPUT, но оператор CREATE FUNCTION указывает CALLED ON NULL INPUT, оператор CREATE FUNCTION имеет приоритет.Атрибут OnNULLCall нельзя указывать для табличных функций CLR.
Надеюсь, что это немного поможет, и я согласен, что это излишне запутывает.