T-SQL | Пользовательские функции (UDF) |
--возвращает самого крутого продавца по общему объёму продаж (SalesYTD) --на заданной территории USE [AdventureWorks] GO CREATE FUNCTION [dbo].[GetSalesPersonID](@TerritoryID as Int) RETURNS int AS BEGIN -- Declare the return variable here DECLARE @Result int -- Add the T-SQL statements to compute the return value here SELECT top 1 @Result = SalesPersonId from Sales.SalesPerson where TerritoryID = @TerritoryID order by SalesYTD desc
-- Return the result of the function RETURN @Result END
Для разработки SQL-выражений, возращающих скалярный результат (Scalar Functions).
Принимают параметры (если задано). Используются в выражениях запросов, а также везде, где допустимо использовать системные функции.
Например, функция принимает на входе два числа типа int (Num1 и Num2), сравнивает полученные числа и возвращает логического результат сравнения в формате bit (единицу или ноль):
CREATE FUNCTION [dbo].[Function1] (@Num1 int, @Num2 int) RETURNS bit AS BEGIN if @Num1 > @Num2 return 1 return 0 END
Использование функции в запросе:
SELECT CustomerID ,[Sales Pack] ,dbo.Function1([Sales Pack], 1000) AS [More than 1000] FROM dbo.CustomerSalesData
Значением поля [More than 1000] является результат выполнения функции dbo.Function1 (True / False). Параметры Function1: [Sales Pack] – "что сравнивать" и статическое значение 1000 – "с чем сравнивать"
См. также примеры:
➢Открыть CURSOR (Recordset), обработать в цикле
|