Udostępnij przez


Functions (Database Engine)

SQL Server zawiera funkcje wbudowane, które służą do wykonywania pewnych operacji.

Funkcje mogą być używane lub zawarte w następujących czynności:

  • Lista Wybierz kwerendę, która korzysta z instrukcja SELECT w celu zwrócenia wartości.

    SELECT DB_NAME();
    GO
    
  • Warunek wyszukiwania klauzula WHERE modyfikacji danych lub SELECT instrukcja (SELECT, INSERT, DELETE lub UPDATE) w celu ograniczenia liczby wierszy, które kwalifikują się do kwerendy.

    USE AdventureWorks;
    GO
    SELECT SalesOrderID, ProductID, OrderQty
    FROM Sales.SalesOrderDetail
    WHERE OrderQty =
       (SELECT MAX(OrderQty) FROM Sales.SalesOrderDetail);
    GO
    
  • Warunek wyszukiwania, klauzula WHERE, w widoku na widok, dynamicznie zgodne z użytkownikiem lub środowiska przy uruchomieniu czas.

    CREATE VIEW ShowMyEmploymentInfo AS
    SELECT FirstName, LastName
    FROM Person.Contact
    WHERE ContactID = SUSER_SID();
    GO
    
  • Dowolne wyrażenie.

  • Ograniczenie typu CHECK lub wyzwalaczy, aby znaleźć określone wartości po wstawieniu danych.

    CREATE TABLE SalesContacts
       (SalesRepID   INT PRIMARY KEY CHECK (SalesRepID = SUSER_SID() ),
       ContactName   VARCHAR(50) NULL,
       ContactPhone   VARCHAR(13) NULL);
    GO
    
  • Ograniczenie DEFAULT lub wyzwalacza podania wartości przypadek, gdy nie został określony przez INSERT.

    CREATE TABLE SalesContacts
       (
       SalesRepID   INT PRIMARY KEY CHECK (SalesRepID = SUSER_SID() ),
       ContactName   VARCHAR(50) NULL,
       ContactPhone   VARCHAR(13) NULL,
       WhenCreated   DATETIME DEFAULT GETDATE(),
       Creator      INT DEFAULT SUSER_SID()
       );
    GO
    

Funkcje są określone w nawiasach nawet gdy nie ma żadnych parametrów.Wyjątkiem od tej są funkcje bez parametrów, które są używane przy użyciu słowa kluczowego DEFAULT.funkcje bez parametrów nie mają parametrów.Aby uzyskać więcej informacji na temat słów kluczowych DEFAULT zobacz ALTER tabela (języka Transact-SQL) i CREATE TABLE (Transact-SQL).

Parametry, aby określić bazę danych, komputer, logowania lub użytkownik bazy danych czasami są opcjonalne.Jeśli nie są określone, domyślnym jest bieżąca baza danych, komputer-host, logowania lub użytkownik bazy danych.

Funkcje mogą być zagnieżdżane.

Kategorie funkcji

Poniższa tabela zawiera listę kategorii dla SQL Server funkcje.

Funkcja kategorii

Description

Aggregate Functions (Transact-SQL)

Wykonywać operacje łączenie wielu wartości w jednym.Przykłady COUNT, Suma, MIN i MAX.

Funkcje konfiguracja

Funkcje skalarne zwracane informacje na temat ustawień konfiguracja.

Cryptographic Functions (Transact-SQL)

Obsługuje szyfrowanie, odszyfrowywanie, podpisywania cyfrowego i sprawdzanie poprawności podpisów cyfrowych.

Funkcje kursor

Zwraca informacje o stanie kursor.

Data i czas funkcji

Zmiana wartości data i godziny.

Funkcje matematyczne

Wykonywanie trygonometryczne geometryczne i innych operacjach numerycznych.

Funkcje metadane

Zwraca informacje o atrybutach baz danych i obiektów bazy danych.

Ranking funkcji

Nondeterministic funkcje zwracają wartość klasyfikację dla każdego wiersza w partycji.

Rowset Functions (Transact-SQL)

Zwracają zestawów wierszy, które mogą być używane zamiast odwołanie tabela Transact-SQL Instrukcja.

Funkcje zabezpieczeń

Zwraca informacje dotyczące użytkowników i ról.

ciąg funkcji

Zmiana char, varchar, nchar, nvarchar, binary, a varbinary wartości.

funkcje systemowe

Działają na lub raportu na różnych opcji poziom systemu i obiektów.

System Statistical Functions (Transact-SQL)

Zwraca informacje o wydajności SQL Server.

Funkcje tekstu i obrazów

Zmiana text i image wartości.

Funkcje deterministyczny i Nondeterministic

W SQL Server, funkcje są klasyfikowane jako ściśle deterministyczny, deterministyczny lub nondeterministic.

Funkcja jest ściśle deterministyczny, jeśli dla określonego zestaw wartości wejściowych, funkcja zwraca zawsze takie same wyniki.

W przypadku funkcji zdefiniowanych przez użytkownika mniej sztywne pojęcie determinism jest stosowana.Funkcji zdefiniowanej przez użytkownika jest deterministyczny, jeśli dla określonego zestaw wartości wejściowych i stanu bazy danych, funkcja zwraca zawsze takie same wyniki.Jeśli funkcja nie jest ściśle deterministyczny, może to być deterministyczny w tym sensie, jeśli jest dostęp do danych.

Funkcja nondeterministic może zwracać różne wyniki jest często nazywany z tym samym zestaw wartości wejściowych.For example, the function GETDATE() is nondeterministic.SQL Server puts restrictions on various classes of nondeterminism.Dlatego nondeterministic funkcji należy używać ostrożnie.

W przypadku funkcje wbudowane determinism i ściśle determinism są takie same.Dla Transact-SQL Funkcje zdefiniowane przez użytkownika, system weryfikuje definicji i zapobiega definicją nondeterministic funkcji. Jednak funkcja uzyskiwanie dostępu do danych i związany z nonschema jest uważany za nie ściśle deterministyczny.Dla typowych funkcja środowiska wykonawczego (CLR) języka definicji funkcja określić deterministyczny, dostęp do danych i dane systemowe, uzyskać dostęp do właściwości funkcja, ale ponieważ te właściwości nie są weryfikowane przez system, funkcje są zawsze traktowane nie ściśle deterministyczny.

Brak determinism funkcja można ograniczyć, gdzie mogą być używane.Może być wywoływana tylko deterministyczny funkcje widoków indeksowanych, indeksowanych kolumny obliczane, trwałych kolumny obliczane lub definicje Transact-SQL Funkcje zdefiniowane przez użytkownika.

Brak ścisłe determinism funkcja mogą blokować optymalizacji wydajności przydatne.Niektóre kroki ponownego zamawiania plan są pomijane w celu zachowania conservatively poprawności.Dodatkowo numer, kolejność i chronometraż wywołania funkcji zdefiniowanej przez użytkownika jest zależne od implementacji.Nie polegać na te semantyka wywołania.Od czasu wykonywania stała built-ins nondeterministic LOS i systemach z rodziny GETDATE numer, kolejność i czas rozmowy będzie zależała od wybranego planu.

Najważniejsze zalecenia dotyczące postępowania

Zaleca się, że użytkownik następujące wytyczne, o ile to możliwe po:

1.Write strictly deterministic functions when you have a choice.W szczególności sieci Transact-SQL funkcji związanych ze schematem.

2.Limit uses of nondeterministic functions to outermost select lists.

3.Do not use nondeterministic functions in performance-critical queries.

4.Do not rely on the number, order, or timing of calls, because these can be implementation-dependent.

Aby uzyskać więcej informacji zobaczDeterministic and Nondeterministic Functions.