Uvod

Tokom rada sa bazama podataka često se izvršavaju isti SQL upiti više puta.

Na primer: prikaz svih filmova, pretraga filma po ID broju, dodavanje novih podataka, izmena postojećih podataka,...

Ako svaki put ponovo pišemo isti SQL kod: trošimo vreme, povećavamo mogućnost greške, otežavamo održavanje sistema.

Zbog toga SQL Server omogućava kreiranje uskladištenih procedura.

Uskladištene procedure predstavljaju unapred sačuvane SQL naredbe koje se nalaze u bazi podataka i mogu se izvršavati više puta po potrebi.

Možemo ih posmatrati kao:

„male programe smeštene unutar baze podataka“


1. Šta su uskladištene procedure?

Uskladištena procedura (Stored Procedure) predstavlja skup SQL naredbi koje se:

  • jednom kreiraju,

  • čuvaju u bazi,

  • izvršavaju po potrebi.

Procedure služe za: automatizaciju rada, organizaciju SQL koda, pojednostavljenje složenih operacija, povećanje bezbednosti baze, ...


Primer problema bez procedure

Ako često želimo prikaz svih filmova:

SELECT *
FROM Film;

Morali bismo stalno da ponavljamo isti kod.

Umesto toga možemo napraviti proceduru.


2. Razlika između funkcije i procedure

Najvažnije razlike su:

Funkcija Procedura
mora vratiti vrednost ne mora vratiti vrednost
koristi RETURN može, ali ne mora vraćati rezultat
koristi se unutar SELECT poziva se pomoću EXEC
ne menja podatke (najčešće) može menjati podatke

Posmatrajte to ovako:

Funkcija = nešto izračuna i vrati rezultat.

Procedura = izvrši posao.

Na primer:

Funkcija:

„Koliko filmova postoji?“

Procedura:

„Prikaži sve filmove.“


3. Kreiranje procedure

Procedura se kreira pomoću naredbe:

CREATE PROCEDURE

Osnovna sintaksa

CREATE PROCEDURE naziv_procedure
AS
BEGIN

    SQL naredbe

END

Objašnjenje:

  • CREATE PROCEDURE → kreira proceduru

  • naziv_procedure → ime procedure

  • BEGIN / END → blok naredbi


Primer 1 – Procedura za prikaz svih filmova

Napravimo proceduru koja prikazuje sve filmove.

CREATE PROCEDURE sp_SviFilmovi
AS
BEGIN

    SELECT *
    FROM Film;

END

Ovde:

  • sp_SviFilmovi → naziv procedure

  • SELECT * FROM Film → prikaz svih filmova

Prefix sp_ znači stored procedure. - Nije obavezan, ali je dobra praksa.


5. Poziv procedure

Za pokretanje procedure koristi se:

EXEC naziv_procedure;

Primer:

EXEC sp_SviFilmovi;

ili

EXECUTE sp_SviFilmovi;

Rezultat: SQL Server izvršava proceduru i prikazuje sve filmove.


6. Procedura sa parametrima

Često želimo da procedura radi sa različitim vrednostima.

Na primer:

prikaz filma prema ID broju.

Tada koristimo parametre.


Primer 2 – Film po ID broju

CREATE PROCEDURE sp_FilmPoID
    @id INT
AS
BEGIN

    SELECT *
    FROM Film
    WHERE FilmID = @id;

END

Poziv procedure

EXEC sp_FilmPoID 3;

Rezultat: prikazuje film čiji je FilmID = 3.


Dodatno objašnjenje

@id predstavlja promenljivu koju korisnik unosi prilikom poziva procedure.

Ako unesemo:

EXEC sp_FilmPoID 5;

procedura će prikazati film sa ID = 5.


7. Procedura za dodavanje podataka

Za razliku od funkcija, procedure mogu menjati sadržaj tabela. Na primer, mogu dodavati podatke.


Primer 3 – Dodavanje filma

CREATE PROCEDURE sp_DodajFilm
    @naziv VARCHAR(100),
    @datum DATE
AS
BEGIN

    INSERT INTO Film
    (
        Naziv,
        DatumIzlaska
    )
    VALUES
    (
        @naziv,
        @datum
    );

END

Poziv procedure

EXEC sp_DodajFilm
'Matrix',
'1999-03-31';

Rezultat: novi film se dodaje u tabelu.


8. Procedura za izmenu podataka

Procedure mogu i menjati postojeće podatke.


Primer 4 – Izmena naziva filma

CREATE PROCEDURE sp_IzmeniFilm
    @id INT,
    @noviNaziv VARCHAR(100)
AS
BEGIN

    UPDATE Film
    SET Naziv = @noviNaziv
    WHERE FilmID = @id;

END

Poziv procedure

EXEC sp_IzmeniFilm
3,
'Titanik 2';

9. Procedura za brisanje podataka

Procedure mogu brisati podatke.


Primer 5 – Brisanje filma

CREATE PROCEDURE sp_ObrisiFilm
    @id INT
AS
BEGIN

    DELETE FROM Film
    WHERE FilmID = @id;

END

Poziv

EXEC sp_ObrisiFilm 4;

10. Uklanjanje procedure

Ako procedura više nije potrebna, može se obrisati.

Sintaksa:

DROP PROCEDURE naziv_procedure;

Primer:

DROP PROCEDURE sp_SviFilmovi;

Nakon toga procedura više ne postoji u bazi.


11. Prednosti uskladištenih procedura

Procedure imaju mnogo prednosti.

1. Ponovna upotreba: Kod se piše jednom. Koristi se više puta.


2. Brži rad: SQL Server čuva proceduru i optimizuje njeno izvršavanje.


3. Veća bezbednost: Korisnik može imati pravo da izvršava proceduru bez direktnog pristupa tabelama.


4. Jednostavnije održavanje: Ako treba promeniti logiku: menja se samo procedura.


5. Organizovaniji kod: Složeni sistemi postaju pregledniji.


12. Kada koristiti procedure?

Koristiti procedure kada:

 često izvršavamo isti SQL kod
 dodajemo podatke
 menjamo podatke
 brišemo podatke
 automatizujemo posao

Ne koristiti procedure za jednostavne jednokratne SELECT upite.


13. Najčešće greške

1. Zaboravljen BEGIN/END

Pogrešno:

CREATE PROCEDURE sp_Test
SELECT * FROM Film

2. Pogrešan poziv procedure

Pogrešno:

SELECT sp_SviFilmovi();

Tačno:

EXEC sp_SviFilmovi;

3. Zaboravljen znak @ kod parametra



Zadaci za vežbu

Zadatak 1 - Napraviti proceduru: sp_SviGlumci koja prikazuje sve podatke iz tabele Glumac.


Zadatak 2 - Napraviti proceduru: sp_GlumacPoID koja prikazuje glumca prema ID broju.


Zadatak 3 - Napraviti proceduru koja dodaje novog producenta.


Zadatak 4 - Napraviti proceduru koja menja naziv žanra.


Zadatak 5 - Napraviti proceduru koja briše film prema ID broju.


Za kraj, najvažnije što treba zapamtiti :

  • kreiraju se pomoću CREATE PROCEDURE

  • pokreću se pomoću EXEC

  • mogu imati parametre

  • mogu menjati podatke

  • brišu se pomoću DROP PROCEDURE

Last modified: Wednesday, 27 May 2026, 9:37 AM