Funkcije i uskladištene procedure u SQL-u predstavljaju skup komandi i upita koje čuvamo za kasniju upotrebu. Umesto da određene linije koda pišemo svaki put kad nam trebaju, sačuvamo ih u obliku funkcije i procedure i pozovemo po potrebi. Isti kod koristimo više puta.
Koja je razlika između funkcije i procedure?
Funkcija mora da vraća neku vrednost, dok kod procedure to nije slučaj. Funkcija ima ulazne parametre, a procedure može imati i ulazne i izlazne. Funkcija može da se pozove iz procedure, procedure ne može da se pozove iz funkcije.
Procedura može da sadrži i SELECT/INSERT/UPDATE/DELETE naredbe, dok funkcija isključivo koristi SELECT. Dakle, procedura može da menja tabele i baze, dok funkcija samo čita vrednosti.
U SELECT upitu može da se pozove funkcije, dok procedura ne može nikako. Slično važi i za prilike kada koristimo WHERE/HAVING.
Funkcija
Sintaksa izgleda otprilike ovako:
CREATE [or REPLACE] FUNCTION ime_funkcije(lista_parametara)
RETURNS izlazni_podatak
LANGUAGE plpgsql
as
$$
DECLARE
-- deklarišemo varijable
BEGIN
-- logika funkcije
END;
$$
Primer:
Ako koristite POSTGRESQL i pgAdmin, funkcija izgleda ovako.
Pozivamo je uglavnom pomoću select ili call naredbe praćemo imenom funkcije i prosleđenim argumentima.
Procedura
Sintaksa za proceduru je:
CREATE [OR REPLACE] PROCEDURE ime_procedure(lista_parametara)
LANGUAGE ime_jezika
AS $
kod;
$;
Primer:
Ovako ona izgleda u pgAdminu.
Pozivamo je pomoću ključnih reči CALL ili EXEC.