SQL – Uskladištene procedure

Koncept uskladištenih procedura (stored procedures) predstavlja jedan od najznačajnijih alatki programera i administratora baza podataka. U suštini, uskladištene procedure predstavljaju skup prevedenih SQL funkcija (instrukcija), koje su smeštene (uskladištene) u samu bazu podataka. Pošto su smeštene u samu bazu podataka, a ne u korisničke aplikacije (na front-end kraju), ovakav skup instrukcija se brže izvršava jer se proces prevođenja instrukcija vrši na SQL serveru. Uskladištene procedure uglavnom sadrže logičke skupove instrukcija, koji se često upotrebljavaju. Njihovom upotrebom, programeri se oslobađaju mnogostrukih pozivanja istih komandi. Još jednu od prednosti predstavlja to što se sve procedure nalaze na jednom mestu, a ne na više mesta u aplikacijama (na front-end kraju), pa je njihova izmena i ažuriranje mnogo lakše. Da kažemo i to, da je Sybase prvi upotrebio koncept uskladištenih procedura u vlastitom SQL serveru, još daleke 1980. godine.

Nakon kreiranja, skladištenja procedura i njihovih kasnijih pozivanja, SQL komande se sekvencijalno izvršavaju, a rezultati obrade šalju se po završetku procedure. Na ovaj način izbegava se i velika „gužva“ na mreži. Prevođenje procedura vrši se pri njihovom prvom pozivanju. U sledećim redovima videćemo primer jedne jednostavne uskladištene procedure:


CREATE PROCEDURE PrvaProc
AS
SELECT *
FROM Radnik
WHERE Plata > 2500
GO

U ovom primeru smo u proceduru dodali samo jednu SELECT instrukciju (iako ona može da sadrži veliki broj naredbi). Na osnovu ovoga, SQL server će kreirati jedan objekat koji će smestiti u odgovarajuću bazu podataka. Pozivanje uskladištene procedure i njeno izvršavanje vrši se preko instrukcije EXECUTE:


EXECUTE PrvaProc

Pozivanjem ove procedure vratiće nam se podaci koji su izdvojeni SELECT naredbom. Ovo je vrlo jednostavan primer procedure, koje inače mogu biti vrlo složene. Procedurama se mogu prosleđivati parametri i promenljive, a mogu se pozivati i iz drugih procedura. Predstavićemo vam jedan primer u kome ćemo prvo kreirati proceduru sa parametrima, a zatim ćemo je izvršiti sa prosleđenim parametrom:


CREATE PROCEDURE PrvaProc
@MBR_param int
AS
SELECT *
FROM Radnik
WHERE MBR = @MBR_param

Ovom procedurom selektujemo podatke o radniku čiji se matični broj prosleđuje:


EXECUTE PrvaProc 106

Znači, pozivamo proceduru čiji je naziv „PrvaProc“ i prosleđujemo joj matični broj radnika (106) kao parametar.

Pratite Krstaricu na www.krstarica.com