Funkcja zdefiniowana przez użytkownika (ang. User Defined Function, UDF) to element bazy danych tworzony przez programistę lub administratora, który można wywołać w zapytaniu SQL.
Funkcja taka przyjmuje argumenty, wykonuje określone operacje i zwraca wynik. W zależności od typu może zwrócić:
- pojedynczą wartość, np. liczbę, tekst, datę,
- zestaw danych widoczny podobnie jak tabela.
Gdzie można jej użyć?
Funkcję można wywołać np. w instrukcji SELECT, w klauzuli WHERE albo jako źródło danych, jeśli zwraca tabelę.
Przykład funkcji zwracającej wartość:
SELECT dbo.ObliczRabat(cena) AS rabat
FROM Produkty;
Przykład funkcji zwracającej dane tabelaryczne:
SELECT *
FROM dbo.ProduktyWTowarze('komputer');
Dlaczego nie procedura ani wyzwalacz?
Procedura składowana również jest zapisanym kodem SQL, ale zwykle uruchamia się ją osobnym poleceniem, np. EXEC, a nie jak zwykłą funkcję wewnątrz zapytania.
Wyzwalacz (trigger) nie jest wywoływany ręcznie w zapytaniu. Uruchamia się automatycznie po zdarzeniu, np. INSERT, UPDATE lub DELETE.
Najważniejsze na egzamin
Jeżeli w pytaniu jest mowa o elemencie SQL, który można wywołać wewnątrz zapytania i który zwraca wartość lub dane jak tabela, chodzi o funkcję zdefiniowaną przez użytkownika.