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]
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]
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.