Uživatelem definovaná funkce
Uživatelsky definovaná funkce, taktéž UDF (z anglického User-Defined Function), představuje funkci, kterou definuje sám uživatel programu nebo prostředí.
Programovací jazyky
[editovat | editovat zdroj]Uživatelsky definované funkce se zpravidla používají při strukturovaném programování, kdy se při řešení úloh krom vestavěných funkcí používají i funkce uživatelsky definované. Použití shodné uživatelsky definované funkce je vesměs pomalejší, než použití shodné, vestavěné.
Databáze
[editovat | editovat zdroj]V SQL databázích poskytují uživatelsky definované funkce způsob rozšíření, který může být volán a vyhodnocován přímo v SQL dotazech. SQL standard rozšiřuje mezi skalárními a tabulkovými funkcemi. Skalární funkce vrací pouze jedu hodnotu (nebo NULL) zatímco tabulková funkce vrací tabulku. Tabulka může mít dle charakteru funkce jeden či více sloupců a vracet žádný či více řádků výsledku.
Uživatelsky definované funkce se v SQL deklarují pomocí příkazu CREATE FUNCTION
. Například funkce pro výpočet druhé mocniny může vypadat takto:
CREATE FUNCTION dbo.Square(Base FLOAT)
RETURNS FLOAT
RETURN (Base * Base)
Takto definovanou funkci lze použít jako výraz v SQL dotazech a to v místech, kde se používá většina vestavěných funkcí včetně SELECT dotazů, kde je funkce vyhodnocována v každém řádku dotazu. Na příklad dotaz z tabulky hodnot
SELECT Value, Square(Value) as Square
FROM Values
vrátí v jednom sloupci hodnotu a v druhém její druhou mocninu. V těle funkce lze použít konstrukcí jazyka PL/SQL.
Některé databáze (například Firebird) pomocí uživatelských funkcí zpřístupňují externí knihovny, napsané v běžných programovacích jazycích. V takovém případě vypadá deklarace následovně (příklad definice funkce ltrim z externí knihovny IB_UDF dodávané společně se serverem):
declare external function ltrim
cstring(255) null
returns cstring(255) free_it
entry_point 'IB_UDF_ltrim' module_name 'ib_udf';
Takto definovaná funkce je zpravidla rychlejší, než uložená procedura se stejnou funkcionalitou.