sql >> Databáze >  >> RDS >> Sqlserver

Co je skalární UDF na serveru SQL?

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.


  1. Porovnat řetězce ignorující akcenty v SQL (ORACLE)

  2. Nejlepší způsob, jak zkontrolovat, zda mysql_query vrátil nějaké výsledky?

  3. Jak vytvořit uživatele v Oracle 11g a udělit oprávnění

  4. Vzor regulárního výrazu ve funkci Nahradit SQL?