logo

Funkce serveru SQL

Funkce v SQL Server jsou databázové objekty, které obsahují a sada příkazů SQL pro provedení konkrétní úlohy . Funkce přijímá vstupní parametry, provádí akce a poté vrací výsledek. Měli bychom si uvědomit, že funkce vždy vracejí buď jednu hodnotu, nebo tabulku. Hlavním účelem funkcí je snadno replikovat společný úkol. Můžeme vytvářet funkce jednorázově a můžeme je používat na více místech podle našich potřeb. SQL Server neumožňuje použití funkcí pro vkládání, mazání nebo aktualizaci záznamů v databázových tabulkách.

výběr řazení java

Níže jsou uvedena pravidla pro vytváření funkcí SQL Server:

  • Funkce musí mít název a název nesmí začínat speciálním znakem, jako je @, $, # nebo jinými podobnými znaky.
  • Příkazy SELECT jsou jediné, které pracují s funkcemi.
  • Můžeme použít kdekoli funkce jako AVG, COUNT, SUM, MIN, DATE a další funkce s dotazem SELECT v SQL.
  • Kdykoli je funkce volána, zkompiluje se.
  • Funkce musí vracet hodnotu nebo výsledek.
  • Funkce používají pouze vstupní parametry.
  • Ve funkcích nemůžeme používat příkazy TRY a CATCH.

Typy funkcí

SQL Server kategorizuje funkce do dvou typů:

  • Systémové funkce
  • Uživatelsky definované funkce

Pojďme si oba typy podrobně popsat.

Systémové funkce

Funkce, které jsou definovány systémem, jsou známé jako systémové funkce. Jinými slovy, všechny vestavěné funkce podporované serverem se označují jako systémové funkce. Vestavěné funkce nám šetří čas při provádění konkrétního úkolu. Tyto typy funkcí obvykle pracují s příkazem SQL SELECT k výpočtu hodnot a manipulaci s daty.

Zde je seznam některých systémových funkcí používaných v SQL Server:

  • Funkce řetězce (LEN, SUBSTRING, REPLACE, CONCAT, TRIM)
  • Funkce data a času (datetime, datetime2, smalldatetime)
  • Agregační funkce (COUNT, MAX, MIN, SUM, AVG)
  • Matematické funkce (ABS, POWER, PI, EXP, LOG)
  • Funkce hodnocení (RANK, DENSE_RANK, ROW_NUMBER, NTILE)

Následující obrázek ukazuje všechny vestavěné databázové funkce používané v SQL Serveru:

Funkce serveru SQL

Uživatelsky definované funkce

Funkce, které jsou vytvořené uživatelem v systémové databázi nebo uživatelsky definované databáze jsou známé jako uživatelsky definované funkce. Funkce UDF přijímají parametry, provádějí akce a vrací výsledek. Tyto funkce nám pomáhají zjednodušit náš vývoj tím, že zapouzdřují složitou obchodní logiku a zpřístupňují ji pro opětovné použití kdekoli na základě potřeb. Uživatelsky definované funkce značně usnadňují psaní kódu potřebného k dotazování na data. Zlepšují také čitelnost a funkčnost dotazů a umožňují ostatním uživatelům replikovat stejné postupy.

SQL Server kategorizuje uživatelem definované funkce hlavně do dvou typů:

weby, jako je bedpage
  1. Skalární funkce
  2. Tabulkové funkce

Zde jsou popisy těchto funkcí UDF.

Skalární funkce

Skalární funkce v SQL Server vždy přijímá parametry, buď jeden nebo více, a vrací jednu hodnotu . Skalární funkce jsou užitečné pro zjednodušení našeho kódu. Předpokládejme, že máme složitý výpočet, který se objevuje v řadě dotazů. V takovém případě můžeme sestavit skalární funkci, která vzorec zapouzdří a použije ho v každém dotazu místo v každém dotazu.

Následující syntaxe ilustruje vytvoření skalární funkce na serveru SQL Server:

 CREATE FUNCTION schema_name.function_name (parameter_list) RETURNS data_type AS BEGIN statements RETURN value END 

Výše uvedené parametry syntaxe jsou popsány níže:

Nejprve definujeme název funkce za VYTVOŘIT FUNKCI klíčová slova. Název schématu je volitelný. Pokud nebudeme definovat název schématu, SQL Server použije výchozí schéma dbo . Dále definujeme seznam parametry uzavřeno v závorkách. Za třetí, napíšeme příkazy pro funkci a poté v VRÁCENÍ SE definujte datový typ návratové hodnoty. Nakonec jsme přidali příkaz RETURN, který vrátí hodnotu uvnitř těla funkce.

Příklad

Tento příklad vytvoří funkci pro vypočítat čisté tržby na základě množství, ceny a hodnoty slevy:

 CREATE FUNCTION udfNet_Sales( @quantity INT, @price DEC(10,2), @discount DEC(3,2) ) RETURNS DEC(10,2) AS BEGIN RETURN @quantity * @price * (1 - @discount); END; 

Nyní můžeme tuto funkci použít k výpočtu čistého prodeje jakékoli prodejní objednávky v definované tabulce.

Následující obrázek ukazuje, kde můžeme najít skalární funkce:

kdy končí q1
Funkce serveru SQL

Skalární funkce můžeme nazvat stejně jako vestavěnou funkci v SQL Serveru. Například můžeme zavolat výše uvedenou funkci udfNet_Sales, jak je uvedeno níže:

 SELECT dbo.udfNet_Sales(25, 500, 0.2) AS net_sales; 

Provedení této funkce vrátí čisté tržby:

Funkce serveru SQL

SQL Server nám také umožňuje pro úpravu skalární funkce pomocí ALTER klíčové slovo. Zde je syntaxe, jak to udělat:

 ALTER FUNCTION schema_name.function_name (parameter_list) RETURNS data_type AS BEGIN statements RETURN value END 

K odstranění skalární funkce z databáze SQL Server můžeme použít níže uvedený příkaz:

 DROP FUNCTION [schema_name.]function_name; 

Tabulkové funkce

Tabulkové funkce v SQL Server jsou uživatelsky definovaná funkce který vrací data typu tabulky. Protože tato funkce je návratový typ je tabulka , můžeme jej použít stejným způsobem jako používáme tabulku.

Tabulkovou funkci můžeme kategorizovat do dvou typů:

1. Funkce Inline Table-Values

Tato funkce UDF vrací proměnnou tabulky na základě akce provedené funkcí. K určení hodnoty proměnné tabulky by měl být použit jeden příkaz SELECT.

Příklad

příkaz java if

Níže uvedený příklad vytvoří funkci tabulkových hodnot a načte data tabulky zaměstnanců:

 --It creates a table-valued function to get employees CREATE FUNCTION fudf_GetEmployee() RETURNS TABLE AS RETURN (SELECT * FROM Employee) 

V této syntaxi je TABULKA VRÁCENÍ určuje, že funkce vrátí tabulku. Vzhledem k tomu, že neexistuje ZAČÁTEK...KONEC příkazu, jednoduše se dotazuje na data z tabulky zaměstnanců. Také, pokud nemá žádné parametry, bude volána přímo.

Tabulkové funkce můžeme volat pomocí Z doložka o VYBRAT dotaz. Například , můžeme nazvat výše uvedené udf_GetEmployee fungovat jako níže:

 SELECT * FROM udf_GetEmployee(); 

Provedení této funkce vrátí výsledek níže:

Funkce serveru SQL

SQL Server nám také umožňuje upravit tabulkové funkce pomocí klíčového slova ALTER namísto klíčového slova CREATE. Zbytek skriptu je stejný.

Vícepříkazové tabulkové funkce (MSTVF)

Tato funkce UDF vrátí proměnnou tabulky na základě akce provedené funkcí. Může obsahovat jeden nebo více příkazů k vytvoření výsledku a je to také funkce, která vrací výsledek více příkazů v tabulkové formě. Je to užitečné, protože v této funkci můžeme provést více příkazů a získat agregované výsledky do vrácené tabulky. Tuto funkci můžeme definovat pomocí proměnné tabulky jako návratové hodnoty. Uvnitř funkce provádíme více dotazů a vkládáme data do této proměnné tabulky.

Následující příklad vytvoří název funkce „VÍCEHODNOTA“ který vrací ' @Zaměstnanec' stůl. Obsahuje tři pole s názvem id, emp_name a plat z 'Zaměstnanec' tabulky pomocí příkazu INSERT a poté pomocí příkazu UPDATE aktualizujte jméno zaměstnance.

kdo je urfi javed
 CREATE FUNCTION MULTIVALUED() RETURNS @Employee TABLE (id INT, emp_name VARCHAR(50), salary INT) AS BEGIN INSERT INTO @Employee SELECT E.id, E.emp_name, E.salary FROM Employee E; UPDATE @Employee SET emp_name = 'Graeme Smith' WHERE id = 3; RETURN END 

Vícepříkazové tabulkové funkce můžeme volat pomocí klauzule FROM dotazu SELECT. Například , můžeme volat výše uvedenou funkci, jak je uvedeno níže:

 SELECT * FROM MULTIVALUED(); 

Provedení této funkce vrátí výsledek níže:

Funkce serveru SQL

Kdy by měly být použity tabulkové funkce?

Tabulkové funkce se běžně používají jako parametrizované pohledy. Funkce s hodnotou tabulky jsou flexibilnější než uložené procedury, protože je lze použít kdekoli, kde se používají tabulky.

Závěr

Tento článek vysvětlí úplný přehled funkcí používaných v SQL Server. Zde jsme se naučili především dva typy funkcí používaných v SQL Server: systémové a uživatelem definované funkce.