Мне нужно создать пользовательскую функцию, которая будет работать аналогично системной функции ISNULL в том отношении, что она будет принимать аргументы любого типа и возвращать значение того же типа. Как это делается?
Использование SQL_VARIANT в качестве типа данных не будет работать, поскольку значения SQL_VARIANT требуют явного приведения. ISNULL неявно выполняет преобразования типов данных.
Как объявить универсальные типы, не требующие явного приведения?
Позвольте мне внести ясность. Я не собираюсь копировать функциональность функции ISNULL. Я использовал функцию ISNULL как образец функции, которая принимает два аргумента любого типа данных, поддерживаемого SQL Server, и возвращает значение того же типа данных, что и аргументы.
Существуют и другие функции SQL Server, которые реализуют тот же шаблон: принимают аргументы, тип данных которых не объявлен явно, и возвращают значение какого-либо другого типа данных, который также не объявлен явно при определении функции. Примеры: NULLIF, CAST, CONVERT.
Мне интересно, как этот шаблон может быть выполнен, потому что любой UDF требует явного определения аргументов и типов данных возвращаемого значения.
ISNULL
уже существует и прекрасно работает, что именно вам нужно, похожее наISNULL
, и для чего? - person Jeroen Mostert   schedule 07.10.2015