Udostępnij za pośrednictwem


Tworzenie funkcje zdefiniowane przez użytkownika (aparat bazy danych)

Funkcje zdefiniowane przez użytkownika są tworzone za pomocą instrukcja CREATE funkcja, modyfikowane za pomocą instrukcja ALTER funkcja, a usunąć przy użyciu instrukcja DROP funkcja.(Nazwa) każdej funkcja zdefiniowanej przez użytkownika w pełni kwalifikowanaschema_name.function_name) musi być unikatowa.

Wskazówki

Transact-SQL błędy powodujące instrukcja można anulować i kontynuować z następną instrukcję w module (na przykład wyzwalacza lub procedury przechowywane) są traktowane odmiennie wewnątrz funkcja.W przypadku funkcja takich błędów spowodować wykonanie funkcja, aby zatrzymać.Powoduje to z kolei instrukcja, która wywołała funkcja, która ma być anulowane.

Instrukcje w blok BEGIN... END nie może mieć żadnych efektów ubocznych.Funkcja efekty są trwałe zmiany stanu zasób, który ma zakres poza funkcją, takie jak modyfikacja tabela bazy danych.Tylko zmian, które mogą być wprowadzone przez argumenty w funkcja są zmiany do obiektów lokalnych do funkcja, takich jak kursory lokalnego lub zmienne.Modyfikacje do tabel bazy danych, operacje na kursory, które nie są lokalne do funkcja, wysyłanie wiadomości e-mail, próba zmiany katalogu i generowania jest zestaw wyników, zwrócony do użytkownika znajdują się przykłady akcji, które nie mogą być wykonywane w funkcja.

Uwaga

Jeśli instrukcja CREATE funkcja efekty uboczne przed zasobów, które nie istnieją podczas generowania instrukcji CREATE funkcja SQL Server wykonuje instrukcję. Jednak SQL Server nie wykonuje tę funkcja, w przypadku wywołania.

Liczbę razy, funkcja określonego w faktycznie wykonaniu kwerendy mogą być różne w różnych planów wykonania wbudowane przez optymalizator.Na przykład funkcja wywoływane przez podkwerenda w klauzula WHERE.Ile razy podkwerenda, a jego funkcja jest wykonywana mogą się różnić ze ścieżkami dostęp inny wybrany przez optymalizator.

Prawidłowe deklaracji funkcja

Typy instrukcji, które są dozwolone w funkcjach:

  • DECLARE instrukcji może służyć do definiowania danych zmienne i kursorów charakter lokalny do funkcja.

  • zestaw przypisania wartości do obiektów lokalnych do funkcja, takich jak za pomocą przypisywania wartości wartość skalarna i lokalnych zmiennych Tabela.

  • Operacje kursor, które odwołują się do lokalnego kursory, które są zadeklarowane otwarte, zamknięte i dealokowane w funkcja.Instrukcje pobrania, które dane są zwracane do klient nie są dozwolone.Dozwolone są tylko instrukcje pobrania, które jest przypisanie wartości do zmiennych lokalnych przy użyciu klauzula INTO.

  • Sterowanie przepływem sprawozdania z wyjątkiem instrukcji TRY... CATCH.

  • Instrukcji SELECT zawierającej wybierz listy z wyrażeniami, przypisywania wartości do zmiennych lokalnych do funkcja.

  • UPDATE, INSERT i DELETE instrukcje modyfikowania tabela zmiennych, które są lokalne do funkcja.

  • wykonać instrukcji wywoływania rozszerzona procedura składowana.

Wbudowane funkcje systemowe

W przypadku funkcji zdefiniowanej przez użytkownika języka Transact-SQL można używać następujących funkcje wbudowane nondeterministic.

CURRENT_TIMESTAMP

@@ MAX_CONNECTIONS

GET_TRANSMISSION_STATUS

@@ PACK_RECEIVED

GETDATE

@@ PACK_SENT

GETUTCDATE

@@ PACKET_ERRORS

@@ POŁĄCZENIA

@@ TIMETICKS

@@ CPU_BUSY

@@ TOTAL_ERRORS

@@ DBTS

@@ TOTAL_READ

@@ BEZCZYNNOŚCI

@@ TOTAL_WRITE

@@ IO_BUSY

 

Nie można użyć następujących funkcje wbudowane nondeterministic w przypadku funkcji zdefiniowanej przez użytkownika języka Transact-SQL.

NEWID

LOS

NEWSEQUENTIALID

TEXTPTR

Aby uzyskać listę funkcji wbudowanych systemu deterministyczny i nondeterministic zobacz Deterministic and Nondeterministic Functions.

Funkcje powiązany schematu

CREATE funkcja obsługuje klauzula SCHEMABINDING, która jest powiązana z funkcja schematu odwołania, takich jak tabele, widoki i inne funkcje zdefiniowane przez użytkownika obiekty.Podjęto próbę zmiany lub usunąć dowolny obiekt, do którego odwołuje się przy użyciu funkcja związanych ze schematem kończy się niepowodzeniem.

Te warunki muszą być spełnione, zanim SCHEMABINDING można określić w CREATE funkcja:

  • Wszystkie widoki i funkcje zdefiniowane przez użytkownika, do którego odwołuje się za pomocą funkcja musi być związanych ze schematem.

  • Wszystkie obiekty, do którego odwołuje się za pomocą funkcji musi być w tej samej bazie danych, jak funkcja.Obiekty muszą odwoływać się przy użyciu nazwy część jednego lub dwóch części.

  • Musisz mieć uprawnienie materiały referencyjne dla wszystkich obiektów (tabel, widoków i funkcji zdefiniowanych przez użytkownika), do którego odwołuje się funkcja.

Za pomocą instrukcji ALTER funkcja usunąć wiązanie schematu.W instrukcja ALTER funkcja należy ponownie zdefiniować funkcja bez określenia SCHEMABINDING WITH.

Określanie parametrów

funkcja zdefiniowanej przez użytkownika przyjmuje zero lub więcej parametrów wejściowych i zwraca wartość wartość skalarna lub tabela.Funkcja może składać się maksymalnie z 1024 parametrów wejściowych.Gdy parametru funkcja jest wartość domyślna, słowo kluczowe DEFAULT musi być określona podczas wywoływania funkcja, które ma być pobrana wartość domyślną.To zachowanie różni się od parametrów z wartościami domyślnymi w zdefiniowanej przez użytkownika procedurach przechowywanych, w których pominięcie tego parametru oznacza również wartości domyślne.Funkcje zdefiniowane przez użytkownika nie obsługują parametrów wyjściowych.