Определяемая пользователем функция, которая возвращает скалярное значение, может быть вызвана в операторах Transact-SQL везде, где допустимо скалярное выражение этого типа данных. Следующая таблица содержит примеры использования скалярных функций.
Запросы ■ Как выражение в select_list оператора SELECT.
■ Как выражение или string_expression в выражениях WHERE или HAVING.
■ Как group_by_expression в выражении GROUP BY.
■ Как order_by_expression в выражении ORDER BY.
■ Как выражение в выражении SET оператора UPDATE.
■ Как выражение в выражении VALUES оператора INSERT.
Определение таблицы
■ ограничения CHECK. Функции могут сослаться только на столбцы той же самой таблицы.
■ определения DEFAULT. Функции могут содержать только константы.
■ вычисляемые столбцы. Функции могут сослаться только на столбцы той же самой таблицы.
Transact-SQL операторы
■ В операторах присваивания.
■ В Булевых выражениях операторов управления потоком.
■ В выражениях CASE.
■ В операторах PRINT (только для функций, возвращающих строку символов).
Функции и хранимые процедуры
■ как параметры функции.
■ Как оператор хранимой процедуры RETURN (только для скалярных функций, которые возвращают целое число).
■ Как оператор RETURN определяемой пользователем функции, предоставляющий значение, которое может быть неявно преобразовано к типу данных вызывающей функции.
Следующий пример выполняет оператор SELECT, который восстанавливает ProductID, Name, и результат скалярной функции SumSoldдля каждого продукта, записанного в AdventureWorks.
SELECT ProductID, Name, Sales.SumSold(ProductID) AS SumSold
FROM Production.Product
Вы можете использовать подставляемые функции, чтобы достигнуть функциональных возможностей параметризованных представлений. Одним из ограничений представления является то, что не разрешено включить параметр в представление, когда Вы его создаете. Вы можете сделать это с помощью выражения WHERE, вызывая представление. Однако, это может потребовать создания строки для динамического выполнения, которое может увеличить сложность приложения. Вы можете достигнуть функциональные возможности параметризованного представления с помощью подставляемой табличной функции.
Рассмотрите следующие характеристики подставляемых определяемых пользователем функций:
■ оператор RETURNS определяет table в качестве возвращаемого типа данных.
■ результирующий набор оператора SELECT определяет формат возвращаемой переменной.
■ выражение RETURN содержит один оператор SELECT в круглых скобках. Оператор SELECT, используемый в подставляемой функции, подчиняется тем же самым ограничениям операторов SELECT, используемых в представлениях.