Функции - подпрограммы, которые используются, чтобы формировать часто выполняемую логику. Чем повторять всю функциональную логику, лучше использовать некий код, который должен выполнить логику через вызов функции.
Этот урок предоставляет краткий обзор функций и объясняет, как и Вы используете их, в дополнение к синтаксису их создания.
Функции - подпрограммы, составленные из одного или более операторов Transact-SQL, которые могут использоваться для формирования кода многократного использования. Функция может иметь входные параметры и возвращать скалярное значение или таблицу. Входные параметры могут быть любого типа данных кроме timestamp, cursor или table, но функции не поддерживают выходные параметры.
Скалярные функциивозвращают одно значение типа данных, определенного в выражении RETURNS. Эти типы функций синтаксически очень похожи на встроенные системные функции такие как COUNT() или MAX().
Встроенная табличная функция возвращает таблицу, которая является результатом одного оператора SELECT. Она подобно представлению, но предлагает больше гибкости, чем представление, потому что Вы можете использовать параметры для функции.
Многооператорная табличная функция возвращает таблицу, построенную с помощью одного или более операторов Transact-SQL и подобны хранимой процедуре. В отличие от хранимой процедуры, на мультиоператорную табличную функцию можно сослаться в выражении FROM оператора SELECT, как на представление или таблицу.
Скалярная функциявозвращает одно значение типа данных, определенного в выражении RETURNS. Тело функции, определенной в блоке BEGIN … END, содержит серию операторов Transact-SQL, которые возвращают значение.
Следующий пример создает скалярную функцию, которая подсчитывает общее количество всех продаж для определенного продукта в базе данных AdventureWorksи возвращает общее количество как int.
CREATE FUNCTION Sales.SumSold(@ProductID int) RETURNS int
AS
BEGIN
DECLARE @ret int
SELECT @ret = SUM(OrderQty)
FROM Sales.SalesOrderDetail WHERE ProductID = @ProductID
IF (@ret IS NULL)
SET @ret = 0
RETURN @ret
END
ЗамечаниеПри изменении или удалении функции, Вы используете подобный синтаксис для изменения или удаления других объектов базы данных. Используйте ALTER FUNCTION, чтобы изменить Вашу функцию, и DROP FUNCTION, чтобы удалить функцию из базы данных.