Podstawy funkcji zdefiniowanej przez użytkownika
Like functions in programming languages, Microsoft SQL Server user-defined functions are routines that accept parameters, perform an action, such as a complex calculation, and return the result of that action as a value.Zwracana wartość może być wartość wartość skalarna lub zestaw wyników.
Zalety funkcji zdefiniowanej przez użytkownika
Korzystanie z funkcji zdefiniowanych przez użytkownika w SQL Server są:
Umożliwiają one programowania modułowego.
Można utworzyć funkcja raz, przechowywane w bazie danych i wywołanie na dowolną liczbę razy w programie.Funkcje zdefiniowane przez użytkownika mogą być modyfikowane niezależnie od programu źródło kodu.
Umożliwiają one szybsze wykonywanie.
Podobne procedury przechowywane, Transact-SQL Funkcje zdefiniowane przez użytkownika zredukować koszty kompilacji Transact-SQL kodu przez buforowanie plany i wielokrotne używanie ich do wielokrotnego wykonania.Oznacza to, że funkcja zdefiniowana przez użytkownika nie trzeba reparsed i reoptimized z każdego zastosowania, co znacznie krótszy czas realizacji.
CLR functions offer significant performance advantage over Transact-SQL functions for computational tasks, string manipulation, and business logic.Transact-SQL functions are better suited for data-access intensive logic.
One zmniejszyć ruch w sieci.
Operację, która filtruje dane oparte na niektóre złożone ograniczenia, które nie można wyrazić w pojedynczym wartość skalarna wyrażenie może być wyrażona jako funkcja.Funkcja może następnie wywoływana w klauzula WHERE, aby zmniejszyć liczbę lub wierszy wysyłane do klient.
Ostrzeżenie
Transact-SQL funkcje zdefiniowane przez użytkownika w kwerendach mogą być wykonywane tylko w jednym wątek (plan wykonania szeregowy).
Składniki funkcji zdefiniowanej przez użytkownika
Funkcje zdefiniowane przez użytkownika mogą być napisane w Transact-SQL, lub w dowolnym.NET języka programowania.Aby uzyskać więcej informacji na temat używania.NET języków w funkcjach, zobacz CLR funkcje zdefiniowane przez użytkownika.
Wszystkie funkcje zdefiniowane przez użytkownika mają taką samą strukturę dwóch części: nagłówka i treści.Funkcja przyjmuje zero lub więcej parametrów wejściowych i zwraca wartooć wartość skalarna lub tabela.
Definiuje nagłówek:
Nazwa funkcji o nazwie właściciela/schematu opcjonalne
Parametr wejściowy nazwę i typ danych
Opcje dotyczące parametru wejściowego
Zwraca typ danych parametru i opcjonalna nazwa
Opcje dotyczące zwracanych parametrów
Jednostka definiuje akcja lub logiki, funkcja wykonywania.Zawiera on albo:
Jeden lub więcej Transact-SQL instrukcji, które wykonują logiki funkcja
Odwołanie do.wirtualny plik dziennika netto
W poniższym przykładzie pokazano prostą Transact-SQL funkcja zdefiniowana przez użytkownika i identyfikuje główne składniki funkcji.Funkcja ocenia podanej data i zwraca wartość wyznaczająca położenie tej data w tygodniu.
IF OBJECT_ID(N'dbo.GetWeekDay', N'FN') IS NOT NULL
DROP FUNCTION dbo.GetWeekDay;
GO
CREATE FUNCTION dbo.GetWeekDay -- function name
(@Date datetime) -- input parameter name and data type
RETURNS int -- return parameter data type
AS
BEGIN -- begin body definition
RETURN DATEPART (weekday, @Date) -- action performed
END;
GO
W poniższym przykładzie funkcja użyta w Transact-SQL instrukcja.
SELECT dbo.GetWeekDay(CONVERT(DATETIME,'20020201',101)) AS DayOfWeek;
GO
Oto zestaw wyników.
DayOfWeek
---------
6
(1 row(s) affected)