Funkcje: Tworzenie funkcji – funkcje skalarne w SQL cz. II

Jak wspomniałem w pierwszej części tego artykułu, SQL poza zwykłymi kwerendami jak prawie każdy język programowania umożliwia również tworzenie funkcji. Przyjrzyjmy się więc jak je napisać…

Fot: Kovah, Flick | CC BY 2.0.

Fot: Kovah, Flick | CC BY 2.0.

Funkcje skalarne, którymi zajmiemy się w tej części tego wpisu zazwyczaj są tak zbudowane, że zwracają pojedynczą wartość. Ważne jest jednak to, że konstrukcji takiej można używać we wszystkich zapytaniach SQL w których dopuszczalne jest użycie wyrażeń skalarnych.

Przy budowie funkcji skalarnych należy zwrócić szczególną uwagę na:

  • nazwę (nie może ona zawierać znaków specjalnych, polskich liter oraz spacji czy tak zwanych znaków białych),
  • blok BEGIN ... END, który musi zostać umieszczony w ciele funkcji,
  • parametry, przy wywoływaniu funkcji muszą zostać podane wszystkie jej parametry (argumenty) nawet te domyślne.

Po zapoznaniu się z teorią, najlepiej prześledzić wszystko w praktyce. Napiszmy więc  funkcję skalarną w SQL.

Uwaga: Omawiany materiał działa na bazach danych firmy Microsoft.

Tabela pracownicy, na której uruchomimy przykładowe zapytanie:

ID Imie Nazwisko Data_urodzenia Stanowisko Data_zatrudnienia
1 Jan Kowalski 1984-12-23 Programista 1999-12-09
2 Adam Adamiak 1991-08-08 Menadżer 2011-01-31
3 Jakub Kowalik 1990-03-16 Programista 2010-01-04
4 Michał Jakubiak 1981-05-02 Projektant 1998-09-22

Przykład

Powyższą funkcję możemy uruchomić takim kodem:

Rezultat:

Jan, Jakub
Adam
Jan, Jakub
Michał

Jak widać, funkcja dla każdego wiersza, zwróciła nam informacje o imionach pracowników, zajmujących dane stanowisko.

Jak to działa?

Uruchamiając zapytanie:

„Przechodziliśmy” po wszystkich wierszach z tabeli pracownicy, podając do funkcji nazwaFunkcji() dane z kolumny Stanowisko. W funkcji tej znowu przechodziliśmy, tym razem po całej tabeli pracownicy tak aby odczytać imiona pracowników zajmujących dane stanowisko. Informacje te były zapisywane do zmiennej @imie, którą na końcu zwróciliśmy.

Jak widać została zwrócona jedna wartość (zmienna @imie) czyli zgodnie z tym co napisałem na początku nasza funkcja skalarna zwróciła pojedynczą daną.

Usuwanie funkcji

Funkcje możemy skasować za pomocą takiego kodu:

, , , , ,