Stored Procedure

Problemi : Marrja e disa zerave (fushave) nga baza e te dhenave.

Ne shume raste per kete mjafton nje query te cilen e ekzekuton dhe ja tek ke rezultatin e kerkuar. Ne raste te tjera nje zgjidhje e tille do te ishte primitive (numri i fushave te kerkuara eshte i konsiderueshem, per te kapur fushat e duhura kerkohen disa INNER JOIN, kjo query perseritet shpesh), pasi per sasi te konsiderueshme te dhenash  do te kishim nje pergjigje + te vonuar.

Zgjidhja: Stored Procedure

 

Stored Procedure

Cfare eshte nje Stored Procedure?

Nga vete emri: nje procedure (nje pjese kodi qe ndervepron me bazen e te dhenave SELECT, INSERT, DELETE, UPDATE) ne SQL qe ruhet ne bazen e te dhenave. Stored Procedure mund te ktheje nje set te dhenash (si rezultat i nderveprimit me bazen e te dhenave), mund te kete disa variabla te deklaruar per procesimin e te dhenave si edhe mund te marre disa parametra (variabla) dhe te ktheje nje rezultat apo variablat e perpunuar.

Organizimi

Perpara se te fillohet ndertimi i Stored Procedure eshte mire te percaktohet nje strukture organizimi. Kjo do te lehtesonte aksesimin e procedurave dhe do e bente me te lehte riperdrimin e tyre.

Perdor nje parashtese qe te identifikoje se file eshte nje stored procedure. Vendos nje emer qe percakton veprimin qe do te kryej procedura bashkengjitur me bazen e te dhenave me te cilen do bashkeveproje.

 

mysp_GetEmriPerdoruesi.sql

 

E njejta logjike eshte mire te ndiqet edhe ne krijimin e variablave, parametrave dhe funksioneve te tjera qe perdoren ne brendesi te procedures.

Te jene letesisht te kuptueshme!

Sintaksa & Shembull

Le te vrasim dy zogj me nje gur apo per ata qe jane fan te PETA ne facebook me nje rruge te bejme dy pune. Le te shpjegojme elementet e sintakses se nje Stored Procedure me ane te nje shembulli konkret funksional.

Per te testuar kete shembull do ju duhet te krijoni me pare:

Bazen e te dhenave :

CREATE DATABASE universiteti

 

Tabelen:     me fushat  dhe te dhenat si me poshte.

CREATE TABLE studenti

(ID int (50) auto_increment primary key,

klasa_id int (10),

emri varchar(20),

mbiemri varchar(20))

 

Popullojme tabelen me disa te dhena.

INSERT INTO studenti (klasa_id,emri,mbiemri)

VALUES(1,"emri1","mbiemri1"),(1,"emri2","mbiemri2"),

(2,"emri3","mbiemri3"),(2,"emri4","mbiemri4"),(1,"emri5","mbiemri5")

 

(kliko per te pare shembullin ne permasa te plota)

DELIMITER $$ à nuk eshte pjese e stored procedure. Kjo komande ndryshon delimiterin nga ; ne $$ ne menyre qe brenda stored procedure te mund te perdorim disa query te ndara me ; .

INà me ane te ketij parametri i jep vlera stored procedure (eshte tipi default).

OUTà me ane te ketij lloj parametri vetem marrim te dhena nga procedura.

INOUTà dergon dhe merr vlera nga stored procedure.

Perdorimi

Mbasi kemi ruajtur Stored Procedure-n ne bazen e te dhenave kemi mundesi ta perdorim ate, ne menyre te drejtperdrejte ose nepermjet nje statement-iStored Procedure, apo funksioni tjeter, ne varesi te rezultatit final qe kerkojme.

CALL  emri _i_procedures();

Per proceduren e shembullit:

CALL  ups_GetStudentet(1);

Perfudime (Avantazhe te tjera)

Eshte nje forme e shpejte per aksesimin dhe perpunimin e informacionit te bazes se te dhenave.

Paraprakisht (perpara se ta therrasesh) duhet ruajtur ne bazen e te dhenave.

Stored Procedure na krijojne mundesine e riperdorimit te kodit. Per te optimizuar kete riperdorim krijo dhe ndiq nje strukture organizative tenden.

Rritet performanca pasi kompilimi realizohet vetem nje here dhe me pas riperdoret pa patur nevoje per kompilim.

Rrit sigurine e bazes se te dhenave. Pasi ju jep perdoruesve te drejte per perdorimin e nje procedure pa ndryshuar te drejtat e aksesimit te tabelave.

Ul trafikun client-server ne bazen e te dhenave.

 

Si duhet te vendosesh nese duhet ta perdoresh apo jo. Nese te duhet te realizosh nje transaksion te thjeshte qe do te ekzekutohet vetem nje here, atehere Stored Procedure jo vetem eshte e panevojshme por dhe nje kohe e humbur pasi nuk do te ndikonte ne rritjen e performances. Ne te kundert Stored Procedure eshte zgjidhja e duhur.

Leave a Reply

Your email address will not be published. Required fields are marked *