Procedury składowane
Jak to działa? W skrócie mówiąc chodzi o to by niektóre operację na bazie dokonywać poprzez wywołanie funkcji, a nie listę kolejnych zapytań SQL w naszej aplikacji.
Jakie są plusy tego rozwiązania?
- implementacja logiki biznesowej - nie trzeba tej samej funkcjonalności implementować/poprawiać gdy mamy kilka aplikacji klienckich, podobna sprawa ma się przy zmianie środowiska programistycznego, mamy mniej do zaimplementowania od nowa
- wydajność - wszystko odbywa się po stronie serwera, już na samym czasie wymiany danych między bazą, a aplikacją zaoszczędzamy
- przejrzystość - wywołanie jednej procedury w aplikacji zamiast kilku zapytań SQL
W PostgreSQL mamy możliwość skorzystania z kilku języków proceduralnych: PL/pgSQL, PL/TCL, PL/Perl, PL/Python, ale na naszych hostingach administracja udostępnia nam zazwyczaj PL/pgSQL.
Na początku utwórzmy bardzo prostą funkcję, która co tydzień będzie miała za zadanie wskazywać określoną ilość najbardziej aktywnych użytkowników na forum. Poniższe przykłady działają dla wersji >= 8.0. Dla wersji 7.4 trzeba je lekko zmodyfikować, np. zamiast $$ użyć apostrofu '.
