Tworzenie funkcji zdefiniowanej przez użytkownika (aparat bazy danych)

Funkcje zdefiniowane przez użytkownika są tworzone za pomocą instrukcja FUNKCYJNEJ TWORZYĆ, modyfikować przy użyciu instrukcja ALTER funkcji i usunąć za pomocą instrukcja FUNKCYJNEJ UPUSZCZANIA.Każda nazwa funkcja zdefiniowanej przez użytkownika w pełni kwalifikowana (schema_name.function_name) musi być unikatowy.

Wytyczne

Transact-SQL błędy powodujące instrukcja anulować i kontynuować z następną instrukcję w module (takich jak wyzwalacze lub procedury przechowywane) są traktowane odmiennie wewnątrz funkcja.W przypadku funkcja takich błędów spowodować wykonanie funkcja zatrzymania.To z kolei powoduje instrukcja, która wywołała funkcja zostać anulowane.

Instrukcje w BEGIN...Blok końcowy nie może mieć żadnych efektów ubocznych.Funkcja efekty uboczne są stałe zmiany stanu zasób, który ma zakres poza funkcji, takich jak modyfikacja tabela bazy danych.Tylko zmiany wprowadzone przez instrukcji w funkcja są zmiany obiektów lokalnych funkcja, takich jak kursory lokalnego lub zmienne.Modyfikacje do tabel bazy danych, operacje na kursory, które nie są lokalne funkcja wysyłania wiadomości e-mail, próby modyfikacji wykazu i generowania jest zestaw wyników zwrócony do użytkownika są przykłady akcji można wykonać funkcja.

Ostrzeżenie

Jeśli instrukcja funkcji tworzenia efektów ubocznych przeciwko zasobów, które nie istnieją podczas generowania instrukcji FUNKCYJNEJ utworzyć SQL Server wykonuje instrukcję.Jednakże SQL Server nie wykonać , gdy wywoływana jest funkcja.

Liczbę wykonanych funkcja określonych w kwerendzie może się różnić między planami wykonanie zbudowane przez optymalizator.Przykładem jest funkcja wywoływana przez podzapytanie w klauzula WHERE.Liczba podzapytanie i jego funkcja jest wykonywana zależą od wybranego przez optymalizator ścieżki dostępu.

Ważne instrukcje w funkcji

Typy oświadczeń, które obowiązują w funkcja:

  • ZADEKLAROWAĆ można sprawozdania danych zmiennych i zdefiniowaniu kursorami lokalnych funkcja.

  • Ustaw przypisania wartości do obiektów lokalnych funkcja, takich jak użycie do przypisywania wartości wartość skalarna i zmienne lokalne tabela.

  • Operacje kursora, odwołujące się do lokalnego kursory, których zgłaszane są otwarte, zamknięte i cofniętych przydziałów w funkcja.Instrukcje pobrania, które dane są zwracane do klient nie są dozwolone.Dozwolone są tylko instrukcje pobrania, które przypisywania wartości do zmiennych lokalnych przy użyciu klauzula INTO.

  • Sprawozdania z kontroli przepływów z wyjątkiem SPRÓBUJ...Zestawień połowowych.

  • Instrukcji SELECT zawierającej zaznacz listy z wyrażeniami, które przypisują wartości do zmiennych lokalnych funkcja.

  • Aktualizacja, wstawianie i usuwanie instrukcji modyfikowania tabela zmiennych lokalnych funkcja.

  • WYKONYWANIE instrukcji wywoływania rozszerzona procedura składowana.

Wbudowane funkcje systemu

Następujące funkcje wbudowane rodzaju można w funkcji zdefiniowanej przez użytkownika języka Transact-SQL.

CURRENT_TIMESTAMP

@@ MAX_CONNECTIONS

GET_TRANSMISSION_STATUS

@@ PACK_RECEIVED

GETDATE

@@ PACK_SENT

GETUTCDATE

@@ PACKET_ERRORS

@@ POŁĄCZEŃ

@@ TIMETICKS

@@ CPU_BUSY

@@ TOTAL_ERRORS

@@ DBTS

@@ TOTAL_READ

@@ BEZCZYNNOŚCI

@@ TOTAL_WRITE

@@ IO_BUSY

 

Nie można używać następujących funkcje wbudowane rodzaju w zdefiniowane przez użytkownika funkcje Transact-SQL.

NEWID

RAND

NEWSEQUENTIALID

TEXTPTR

Listę wbudowanych przewidywalne i rodzaju funkcje systemowe, zobacz Przewidywalne i rodzaju funkcje.

Funkcji związanych ze schematem

Tworzenie funkcja obsługuje klauzula SCHEMABINDING, która wiąże funkcja schematu obiekty odwołuje, takich jak tabele, widoki i inne funkcje zdefiniowane przez użytkownika.Próba zmiany lub usunąć dowolny obiekt odwołuje funkcja związanych ze schematem nie powiedzie się.

Warunki te muszą być spełnione, zanim będzie można określić SCHEMABINDING w funkcji tworzenia:

  • Wszystkie widoki i funkcje zdefiniowane przez użytkownika odwołuje się funkcja musi być związanych ze schematem.

  • Wszystkie obiekty odwołuje się funkcja musi być w tej samej bazy danych jako funkcja.Obiekty muszą odwoływać się przy użyciu nazwy części jednej lub dwóch części.

  • Na wszystkich obiektach (tabele, widoki i funkcje zdefiniowane przez użytkownika), do którego odwołuje się do funkcja, musisz mieć uprawnienie odwołania.

Funkcja ZMIENIA umożliwia usunięcie powiązanie schematu.instrukcja ALTER funkcja należy ponownie zdefiniować funkcja bez określania Z SCHEMABINDING.

Określanie parametrów

Funkcja zdefiniowana przez użytkownika przyjmuje zero lub więcej parametrów wejściowych i zwraca wartooć wartość skalarna lub tabela.Funkcja może mieć maksymalnie 1024 parametrów wejściowych.Gdy parametr funkcja ma wartość domyślną, słowo kluczowe domyślna musi być określona podczas wywoływania funkcja, aby uzyskać wartość domyślna.To zachowanie różni się od parametrów z wartości domyślne w zdefiniowanej przez użytkownika procedur przechowywanych, w których pominięcie parametru oznacza również wartość domyślną.Funkcje zdefiniowane przez użytkownika nie obsługuje parametrów wyjściowych.