Udostępnij za pośrednictwem


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)

Zobacz także

Koncepcje

Inne zasoby