Funkcje (aparat bazy danych)
SQL Serverzawiera funkcje wbudowane używane do wykonywania pewnych operacji.
Funkcje mogą być używane lub zawarte w następujących:
Lista Wybierz kwerendę, która używa instrukcja SELECT, zwrócona wartość.
SELECT DB_NAME(); GOWarunek wyszukiwania klauzula WHERE modyfikacji danych lub wybierz instrukcja (SELECT, INSERT, DELETE lub UPDATE), aby ograniczyć liczbę wierszy, które kwalifikują się do kwerendy.
USE AdventureWorks2008R2; GO SELECT SalesOrderID, ProductID, OrderQty FROM Sales.SalesOrderDetail WHERE OrderQty = (SELECT MAX(OrderQty) FROM Sales.SalesOrderDetail); GOWarunek wyszukiwania, klauzula WHERE, aby widok dynamicznie zgodne z użytkownika lub środowiska przy uruchomieniu widoku czas.
CREATE VIEW ShowMyEmploymentInfo AS SELECT FirstName, LastName FROM Person.Person WHERE BusinessEntityID = SUSER_SID(); GODowolne wyrażenie.
Ograniczenie typu CHECK lub wyzwalacza szukać określonych wartości, po wstawieniu danych.
CREATE TABLE SalesContacts (SalesRepID INT PRIMARY KEY CHECK (SalesRepID = SUSER_SID() ), ContactName VARCHAR(50) NULL, ContactPhone VARCHAR(13) NULL); GODOMYŚLNE ograniczenie 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 brak parametru.Nie są ze słowem kluczowym domyślne używane są funkcje bez parametrów.Funkcji zerowych nie mają parametrów.Aby uzyskać informacje dotyczące słowa kluczowego DOMYŚLNYCH, zobacz ALTER TABLE (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 jest określony, domyślnie jest bieżącej bazy danych, komputer-host, logowania lub użytkownik bazy danych.
Funkcje można zagnieżdżać.
Kategorie funkcji
W poniższej tabela wymieniono kategorie dla SQL Server funkcji.
Funkcja kategorii |
Opis |
|---|---|
Wykonywać operacje łączenia wielu wartości w jednym.Przykładami są liczby, Suma, MIN i MAX. |
|
Funkcje skalarne, które zwraca informacje dotyczące ustawień konfiguracja. |
|
Obsługuje szyfrowanie, odszyfrowywanie, podpisywania cyfrowego i sprawdzanie poprawności podpisów cyfrowych. |
|
Zwraca informacje o stanie kursor. |
|
Zmiana data i czas wartości. |
|
Wykonywanie i trygonometryczne czy geometrycznych operacjach numerycznych. |
|
Zwraca informacje o atrybutach baz danych i obiektów bazy danych. |
|
Rodzaju funkcje, które zwracają wartość klasyfikację dla każdego wiersza w partycji. |
|
Zwracają zestawów wierszy, które mogą być używane zamiast odwołanie do tabela w Transact-SQL instrukcja. |
|
Zwraca informacje dotyczące użytkowników i ról. |
|
Change char, varchar, nchar, nvarchar, binary, and varbinary values. |
|
Działają na lub raportu na różne opcje poziom systemu i obiektów. |
|
Zwraca informacje o wydajności SQL Server. |
|
Zmień text i image wartości. |
Przewidywalne i rodzaju funkcje
W SQL Server, funkcje są klasyfikowane jako ściśle deterministyczny, deterministic lub rodzaju.
Funkcja jest ściśle deterministyczny, jeśli dla określonego zestaw wartości wejściowych, funkcja zwraca zawsze takie same wyniki.
Funkcje zdefiniowane przez użytkownika zastosowano mniej sztywne pojęcia determinism.Funkcja zdefiniowana 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 być deterministyczny w tym sensie, jeśli jest dostęp do danych.
Funkcja rodzaju może zwracać różne wyniki jest wywoływany cyklicznie 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 rodzaju funkcji należy używać ostrożnie.
funkcje wbudowane determinism i determinism ścisłe są takie same.Dla Transact-SQL Funkcje zdefiniowane przez użytkownika, system sprawdza definicji i zapobiega definicji rodzaju funkcje.Jednak funkcja dostępu do danych lub związany z nonschema są uważane za ściśle deterministyczny.Typowe funkcje language runtime (CLR) deterministyczny, określić definicje funkcja dostępu do danych i właściwości funkcja, dostęp do danych systemu, ale ponieważ te właściwości nie są weryfikowane przez system, funkcje zawsze nie są uważane za ściśle deterministyczny.
Brak determinism funkcja można ograniczyć, gdzie mogą być używane.Może być wywoływana tylko funkcje deterministic Widoki indeksowane, obliczanych kolumn indeksowanych, utrwalonej kolumny obliczane lub definicje Transact-SQL Funkcje zdefiniowane przez użytkownika.
Brak ściśle determinism funkcja można blok cenne performance optimizations.Niektóre kroki ponownego zamawiania planu są pomijane umiarkowane zwiększenie rozmiaru zachować prawidłowości.Ponadto numer zamówienia i czasu wywołania funkcji zdefiniowanej przez użytkownika jest zależne od implementacji.Nie polegać na semantyka te wywołania.Od LOS stała built-ins rodzaju runtime i rodziny GETDATE numer, kolejność i chronometraż wywołań będzie zależeć od wybranego planu.
Najlepszymi sposobami
Zalecane jest zgodnie z wytycznymi następujące możliwe:
1.Write strictly deterministic functions when you have a choice.W szczególności z Transact-SQL funkcje schematu-granica.
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, zobacz Przewidywalne i rodzaju funkcje.
Zobacz także