Funkcije i uskladištene procedure u SQL-u (POSTGRESQL)

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.