Funkcje: Funkcje tablicowe w SQL cz. III
Funkcje tablicowe definiowane przez programistę charakteryzują się między innymi tym, że zwracają one określone dane (na przykład tabelę) i głównie wykorzystywane są w zwykłych kwerendach po klauzuli FROM
. Można więc z nich korzystać bardzo podobnie jak z widoków. Funkcje tablicowe to pewnego rodzaju procedury składowane, które działają mniej więcej na tych samych zasadach.
Pisząc funkcje tablicowe w SQL nie definiujemy boku BEGIN - END
, a jedyne co musimy zrobić to napisać zapytanie i zwrócić odpowiednie dane. Oczywiście mogą to być informacje odpowiednio spersonalizowane na podstawie odczytanych jako argumenty pewnych danych.
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
No to tyle z teorii, czas zabrać się za praktykę. Napiszmy więc funkcję tablicową, która na podstawie przekazanego jako argument nazwy stanowiska zwróci nam tabelę z pracownikami zajmującymi dane stanowisko.
GO CREATE FUNCTION FN_pracownicy (@stanowisko AS VARCHAR(200)) RETURNS TABLE AS RETURN SELECT imie, nazwisko FROM pracownicy WHERE stanowisko = @stanowisko; GO
Po uruchomieniu tego zapytania dostaniemy informację, że funkcja została zapisana na serwerze. Aby z niej skorzystać należy uruchomić poniższy kod:
SELECT * FROM FN_pracownicy('Programista');
Rezultat:
imie | nazwisko |
Jan | Kowalski |
Jakub | Kowalik |
O tym jak skasować stworzoną wyżej funkcję, możecie przeczytać w poprzedniej części tego artykułu: Funkcje: Tworzenie funkcji – funkcje skalarne w SQL cz. II.
Modyfikacja funkcji
Przypuśćmy, że nasza funkcja zapisana na serwerze SQL zawiera błąd. Co więc w takiej sytuacji zrobić? Możemy ją oczywiście skasować i napisać od nowa, ale jeśli nie mamy jej kodu? W Microsoft SQL Management Studio aby dostać się do zapisanych funkcji wystarczy wykonać następujące kroki:
- Przechodzimy do bocznego okna o nazwie „Object Explorer” następnie z rozwijanej listy wybieramy „Databases”, odszukujemy nazwę naszej bazy danych w moim przypadku jest to „kurs”, następnie folder „Programmability”, folder „Functions”, folder „Table-valued Functions” (tutaj przechowywane są właśnie funkcje tablicowe) oraz odnajdujemy na liście naszą funkcję.
- Klikamy prawym przyciskiem myszy na nazwie funkcji, którą chcemy zmodyfikować i z menu kontekstowego wybieramy opcję „Modify”:
- Po wykonaniu powyższych czynności otworzy nam się kod funkcji, który możemy dowolnie zmodyfikować, a po zakończeniu prac wystarczy po prostu wcisnąć przycisk „Execute”:
- Funkcja została zmodyfikowana.