Пользовательские функции — это блоки кода/SQL, предназначенные для повторного использования самыми различными потребителями: хранимыми процедурами, приложениями и даже другими функциями. В этом отношении они не отличаются от функций, написанных на языке C# или Visual Basic. Это процедуры, которые могут принимать параметры и возвращать значение. Пользовательские функции возвращают скалярные значения (например, единственное значение) или результирующий набор данных (содержащий строки и столбцы данных).
Примером пользовательской функции может служить функция, которая принимает дату, а затем определяет, какой это день — рабочий или выходной. Хранимые процедуры или другие функции базы данных могут затем использовать эту функцию как часть своей обработки.
Поскольку пользовательские функции содержат операторы Т-SQL и имеют формат, который аналогичен хранимым процедурам, то основным инструментом для их написания является опять-таки редактор SQL Editor. Для каждого имеющегося в Server Explorer подключения к данным в каталоге Functions будут содержаться все существующие функции. Для создания новой функции вы можете щелкнуть правой кнопкой мыши по этому каталогу, выбрать пункт Add New, а затем указать тип создаваемой функции. Здесь имеются три варианта:
□ Inline Function (Встраиваемая функция) возвращает значения как результирующий набор данных; этот набор создается из результатов запроса select;
□ Table-valued Function (Возвращающая табличное значение функция) возвращает значения как результирующий набор данных; этот набор формируется посредством программного создания внутри функции таблицы, которая затем заполняется при помощи запросов insert into);
□ Scalar-valued Function (Скалярная функция) возвращает единственное значение.
После выбора соответствующего типа функции в новом окне редактора SQL Editor появится код шаблона для данной функции. Вы можете использовать визуальный конструктор Query/View Designer для того, чтобы конструировать SQL внутри этой функции.
За подробностями по написанию функций и их наилучшему использованию в базе данных обратитесь к документации по вашей базе данных.