Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Co to jest skalarny UDF w programie SQL Server?

W programie SQL Server skalarny UDF lub skalarna funkcja zdefiniowana przez użytkownika to funkcja zdefiniowana przez użytkownika, która zwraca pojedynczą wartość.

Jest to przeciwieństwo funkcji z wartościami tabeli, która zwraca zestaw wyników w postaci tabeli.

Funkcje zdefiniowane przez użytkownika można zapisać jako UDF T-SQL lub CLR (Common Language Runtime) UDF. Środowisko CLR umożliwia tworzenie UDF w kodzie zarządzanym przy użyciu dowolnego języka programowania .NET Framework. Funkcje te są następnie dostępne dla T-SQL lub innego kodu zarządzanego.

Przykład 1 – Podstawowy skalarny UDF

Oto przykład kodu użytego do stworzenia podstawowego skalarnego UDF w języku T-SQL.

CREATE FUNCTION dbo.ufn_discountPrice( 
    @price DECIMAL(12,2), 
    @discount DECIMAL(12,2) 
    ) 
RETURNS DECIMAL (12,2)
AS
BEGIN
  RETURN @price * (1 - @discount);
END;

Ten skalarny UDF akceptuje dwa parametry; @price i @discount . Są one przekazywane do funkcji jako argumenty przy każdym wywołaniu funkcji. Funkcja pobiera wartość tych argumentów, wykonuje obliczenia przy użyciu tych wartości, a następnie zwraca wynikową wartość. W takim przypadku zwracana jest obniżona cena.

Przykład 2 – Wywołaj UDF

Po utworzeniu UDF można go wywołać w kodzie T-SQL w dowolnym momencie.

Oto przykład wywoływania UDF:

SELECT dbo.ufn_discountPrice(100, .2) AS Result;

Wynik

+----------+
| Result   |
|----------|
| 80.00    |
+----------+

W kolumnach obliczeniowych można również używać skalarnych funkcji UDF. Może to być szczególnie przydatne, jeśli potrzebujesz kolumny obliczeniowej, aby uzyskać dostęp do danych w innej tabeli.

Opcje funkcji

Podczas tworzenia skalarnego UDF dostępne są różne opcje, które można zastosować do funkcji.

Na przykład możesz określić, czy ma być powiązany ze schematem. Możesz określić, że ma być zaszyfrowany. Możesz także określić EXECUTE AS klauzula określająca kontekst bezpieczeństwa, w którym wykonywana jest funkcja zdefiniowana przez użytkownika.

Zapoznaj się z dokumentacją firmy Microsoft, aby uzyskać szczegółową listę opcji, które możesz podać podczas tworzenia lub modyfikowania funkcji zdefiniowanej przez użytkownika.

Typ danych parametru

W przypadku funkcji T-SQL wszystkie typy danych, w tym typy zdefiniowane przez użytkownika CLR i typy tabel zdefiniowane przez użytkownika, są dozwolone z wyjątkiem sygnatury czasowej i nieskalarny kursor i stół typy.

W przypadku funkcji CLR dozwolone są wszystkie typy danych, w tym typy zdefiniowane przez użytkownika, z wyjątkiem tekstu , ntekst , obraz , typy tabel zdefiniowane przez użytkownika, sygnatura czasowa typy danych i nieskalarny kursor i stół typy.

Typ danych zwrotu

Zwracany typ danych dla skalarnych funkcji UDF w języku T-SQL może być dowolnym typem danych z wyjątkiem znacznika czasu i nieskalarny kursor i stół typy.

Funkcje CLR mogą używać dowolnego typu danych z wyjątkiem tekstu , ntekst , obraz , sygnatura czasowa i nieskalarny kursor i stół typy.

Zarówno funkcje T-SQL, jak i CLR mogą mieć zdefiniowany przez użytkownika typ CLR dla wartości zwracanej.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przywracanie dostępu do instancji SQL Server bez ponownego uruchamiania

  2. Uzyskaj wartości graniczne dla tabeli partycjonowanej w programie SQL Server (T-SQL)

  3. Jak konwertować między formatami dat w SQL Server za pomocą CAST()

  4. Jak zmienić domyślną bazę danych w SQL Server bez użycia MS SQL Server Management Studio?

  5. Znaczenie nawiasów kwadratowych [] w projektancie tabel MS-SQL?