V SQL Server je skalární UDF nebo skalární uživatelsky definovaná funkce uživatelem definovaná funkce, která vrací jednu hodnotu.
To je na rozdíl od funkce s hodnotou tabulky, která vrací sadu výsledků ve formě tabulky.
Uživatelsky definované funkce lze zapsat buď jako T-SQL UDF nebo CLR (Common Language Runtime) UDF. CLR umožňuje vytvářet UDF ve spravovaném kódu pomocí libovolného programovacího jazyka .NET Framework. Tyto funkce jsou pak přístupné T-SQL nebo jinému spravovanému kódu.
Příklad 1 – Základní skalární UDF
Zde je příklad kódu použitého k vytvoření základního skalárního UDF T-SQL.
VYTVOŘIT FUNKCI dbo.ufn_discountPrice( @price DECIMAL(12,2), @discount DECIMAL(12,2) ) VRÁCENÍ DESETINNÉ (12,2)ASBEGIN RETURN @price * (1 - @sleva);END;Tento skalární UDF přijímá dva parametry;
@price
a@discount
. Tyto jsou předány funkci jako argumenty při každém vyvolání funkce. Funkce převezme hodnotu těchto argumentů, provede výpočet pomocí těchto hodnot a poté vrátí výslednou hodnotu. V tomto případě je vrácena zlevněná cena.Příklad 2 – Vyvolání UDF
Jakmile je UDF vytvořeno, lze jej kdykoli vyvolat v kódu T-SQL.
Zde je příklad vyvolání UDF:
SELECT dbo.ufn_discountPrice(100, .2) AS Result;Výsledek
+-----------+| Výsledek ||-----------|| 80,00 |+----------+Můžete také použít skalární UDF ve vypočítaných sloupcích. To může být zvláště užitečné, pokud potřebujete vypočítaný sloupec pro přístup k datům v jiné tabulce.
Možnosti funkcí
Když vytvoříte skalární UDF, existují různé možnosti, které můžete na funkci použít.
Můžete například určit, zda má nebo nemá být vázán na schéma. Můžete určit, že má být šifrována. Můžete také zadat
EXECUTE AS
klauzule k určení kontextu zabezpečení, ve kterém se provede uživatelsky definovaná funkce.Podrobný seznam možností, které můžete poskytnout při vytváření nebo změně uživatelem definované funkce, najdete v dokumentaci společnosti Microsoft.
Typ dat parametru
Pro funkce T-SQL jsou povoleny všechny datové typy, včetně uživatelsky definovaných typů CLR a uživatelsky definovaných typů tabulek, kromě časového razítka a neskalární kurzor a tabulka typy.
U funkcí CLR jsou povoleny všechny datové typy, včetně uživatelsky definovaných typů CLR, kromě textu , ntext , obrázek , uživatelsky definované typy tabulek, časové razítko datové typy a neskalární kurzor a tabulka typy.
Typ vrácených dat
Návratový datový typ pro skalární UDF T-SQL může být libovolný datový typ kromě časového razítka a neskalární kurzor a tabulka typy.
Funkce CLR mohou používat jakýkoli datový typ kromě textu , ntext , obrázek , časové razítko a neskalární kurzor a tabulka typy.
Funkce T-SQL i CLR mohou mít pro svou návratovou hodnotu uživatelsky definovaný typ CLR.