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(); GOWarunek 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); GOWarunek 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(); GODowolne 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); GOOgraniczenie 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 |
|---|---|
Wykonywać operacje łączenie wielu wartości w jednym.Przykłady COUNT, Suma, MIN i MAX. |
|
Funkcje skalarne zwracane informacje na temat ustawień konfiguracja. |
|
Obsługuje szyfrowanie, odszyfrowywanie, podpisywania cyfrowego i sprawdzanie poprawności podpisów cyfrowych. |
|
Zwraca informacje o stanie kursor. |
|
Zmiana wartości data i godziny. |
|
Wykonywanie trygonometryczne geometryczne i innych operacjach numerycznych. |
|
Zwraca informacje o atrybutach baz danych i obiektów bazy danych. |
|
Nondeterministic funkcje zwracają wartość klasyfikację dla każdego wiersza w partycji. |
|
Zwracają zestawów wierszy, które mogą być używane zamiast odwołanie tabela Transact-SQL Instrukcja. |
|
Zwraca informacje dotyczące użytkowników i ról. |
|
Zmiana char, varchar, nchar, nvarchar, binary, a varbinary wartości. |
|
Działają na lub raportu na różnych opcji poziom systemu i obiektów. |
|
Zwraca informacje o wydajności SQL Server. |
|
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.
See Also