Я хочу написать пользовательскую функцию, отличную от CLR, в SQL Server 2005. Эта функция принимает входную строку и возвращает выходную строку. Если входная строка недействительна, я хочу указать вызывающему абоненту на ошибку.
Моей первой мыслью было использовать RAISERROR для создания исключения. Однако SQL Server не допускает этого внутри UDF (хотя вы можете создавать исключения в UDF на основе CLR, см. Рисунок).
Мое последнее средство - вернуть NULL (или какое-либо другое значение индикатора ошибки) из функции, если входное значение ошибочно. Однако мне этот вариант не нравится, так как он:
- Не предоставляет звонящему никакой полезной информации
- Не позволяет мне возвращать NULL в ответ на действительный ввод (поскольку он используется как код ошибки).
Есть ли удобный для вызывающего абонента способ остановить функцию при ошибке в SQL Server?