You are on page 1of 14

Procedure baze podataka -

Persistent Stored Module


(PSM)
INFORMACIONI
SISTEMI 2

Profesor: prof.dr. Biljana Radulović Student: Nemanja Cvejić IT63/18


Stored procedure
SQL nam dozvoljava da definišemo procedure i funkcije koje
smeštamo na server baze podataka.
Prednosti:
Složena aplikaciona logika koja se izvršava dok je “bliska”
podacima, što implicira efikasnost.
Kontrast sa tuple-at-a-time procesiranjem od strane JDBC-a
(Java Database Connectivity) kroz „cursore“.
Ponovno korišćenje aplikacione logike
Persistent Stored Module (PSM)
Persistent Stored Module (SQL/PSM) je funkcija koja korisnicima
pruža mogućnost da dodaju sopstvene ekstenzije standardnom
SQL-u. Najvažniji razlozi za pružanje takve mogućnosti su:
U slučaju aplikacija koje zahtevaju objekte iznad onih koje
obezbeđuje SQL/92 standard, SQL/PSM postaje vredan alat za
razvoj aplikacija.
SQL funkcije i procedure mogu biti uskladištene na lokaciji
servera i pozvane sa klijentske lokacije.
Korisnicima se može dati pravo da pozovu uskladištenu
proceduru koja na primer, ažurira tabelu, ali im je uskraćeno
pravo da direktno ažuriraju tabelu.
Persistent Stored Module (PSM)
U SQL-u, reč „persistent (engl. uporan, istrajan)“ se primenjuje na
objekte šeme koji opstaju tokom SQL-sesija (kao što rade „trajne
osnovne tabele“). A vrsta modula o kojoj govorimo su zaista
objekti šeme – oni se čuvaju u šemama, baš kao što su tabele i
domeni i drugi objekti šeme. (Stvarno skladište je na serveru i ovi
objekti se ponekad nazivaju „SQL-server moduli“, ali njihova
fizička lokacija nije važna.)
Stoga je razumno razmišljati o trajnom memorisanom modulu kao
[program] modulu koji se trajno čuva unutar šeme SQL “baze
podataka”. Kao i kod drugih objekata šeme, postoje naredbe
CREATE, ALTER i DROP za kreiranje, izmenu i uništavanje
modula.
Persistent Stored Module (PSM)
Modul je definisan deskriptorom koji sadrži šest informacija:
<ime modula>, kvalifikovanog od strane <imena šeme> šeme
kojoj pripada.
Naziv skupa znakova koji se koristi za izražavanje imena svih
objekata šeme pomenutih u definiciji modula.
<AuthorizationID> modula – ovo je <AuthorizationID> koji
poseduje šemu modula.
Lista <imena šeme> sadržana u specifikaciji putanje modula.
Deskriptor za svaku deklarisanu lokalnu privremenu tabelu
definisanu u Modulu.
Deskriptor za svaku SQL-pozvanu rutinu sadržanu u Modulu.
CREATE MODULE izraz
Izraz CREATE MODULE kreira modul SQL servera, modul koji
pripada šemi. Potrebna sintaksa za izraz CREATE MODULE je:

Ovaj izraz ne treba mešati sa jednostavnim izrazom MODULE koja


je deo suštinskog SQL-a, pošto on definiše modul SQL klijenta.
Iako su slični, PSM izrazi neće raditi ni na čemu osim na PSM
modulu.
ALTER MODULE izraz
Izraz ALTER MODULE nam omogućava da promenimo definiciju modula.
Potrebna sintaksa za izraz ALTER MODULE je:

gde <Module contents> može biti funkcija, procedura ili bilo koja od drugih
stvari koje mogu biti deo modula (izuzeci, rukovaoci, promenljive, kursori,
deklarisane tabele i tako dalje).
Primer:

Nakon izvršenja ovog ALTER MODULE izraza, modul


EMPLOYEES_MODULE će imati samo dve preostale procedure,
Delete_Employees i Update_Employees.
DROP MODULE izraz
DROP MODULE izraz uništava SQL-Server modul. Sintaksa potrebna za DROP
MODULE izraz je:

<Module name> mora da identifikuje postojeći modul čiji je vlasnik ili trenutni
<AuthorizationID>, ili uloga koju trenutni <AuthorizationID> može da koristi.

RESTRICT omogućava da samo modul bez zavisnih objekata može biti uništen.
Ako modul koristi bilo koji drugi objekat, izraz neće uspeti.

CASCADE omogućava uništavanje navedenog modula, kao i njegovih rutina,


trigera, ograničenja, privilegija koji zavise od njega.
Izrazi kontrole toka (Flow control
statements)
Esencijalni SQL nema skoro ništa što može da kontroliše tok programa (osim izraza
CALL i RETURN koje su povezane sa SQL rutinama). Nasuprot tome, DBMS sa
podrškom za PSM dozvoljava osam kontrolnih izraza. Od toga, sedam je onih koje
se pojavljuju u drugim jezicima. Osmi, FOR, zavisi od objekata koji su jedinstveni
za SQL okruženje. Lista ovih izraza glasi:

1.CASE – Menjanje (switch) u zavisnosti od uslova.


2.IF – If (uslov) izvršavanje naredbi.
3.ITERATE – Restartovanje petlje.
4.LOOP – Kontinualno izvršavanje naredbi.
5.LEAVE – Izlaz iz petlje ili iz bloka naredbi.
6.WHILE – Ponavljanje naredbi dok je uslov tačan.
7.REPEAT – Ponavljanje narebi dok uslov ne bude tačan.
8.FOR – Kursor-bazirana FETCH petlja.
Složeni izrazi (Compound statements)
Sekvenci od jednog ili više SQL izraza mogu se dodati tačka zarez
(semicolon) terminatori i postaviti je u zagradu unutar BEGIN i END izraza,
tako da se može tretirati kao jedinica.
Složeni izraz može uključivati definicije SQL promenljivih (variables), uslova
(conditions) i rukovalaca (handlers) čiji je opseg dotični složeni izraz, koji
nadjačavaju definicije stavki koje imaju isto ime, ali su izvan specifikovanog
opsega.

Reč ATOMIC specifikuje da je BEGIN-END blok izvršen unutar “atomskog


konteksta izvršenja” koji po default-u NIJE ATOMSKI.
Rukovanje izuzecima (Exception
Handling)
Složeni izrazi unutar PSM rutina mogu napraviti sopstvene aranžmane za
rukovanje izuzecima koji mogu nastati tokom izvršavanja složenog izraza.
Definisanje handler-a za rukovanje izuzecima:

“action” – jedan ili složeni SQL izraz koji će biti izvršen ako se neki od
specifikovanih izuzetaka desi. Izuzeci su:
• SQLEXCEPTION - odgovara vrednostima SQLSTATE sa vrednošću klase
drugačijim od 00, 01, 02.
• SQLWARNING - odgovara vrednostima SQLSTATE sa vrednošću klase
drugačijim od 01.
• NOT FOUND – odgovara vrednostima SQLSTATE sa vrednošću klase 02.
Rukovanje izuzecima (Exception
Handling)
Opcionalni tipovi handler-a specifikuju šta će sistem uraditi pre i posle
izvršavanja specifikovane akcije:
CONTINUE – Pri uspešnom završetku specifikovane akcije, kontrola se
prenosi na izraz odmah, prateći onog koji je postavio uslov koji je
prouzrokovao da prethodna akcija bude pokrenuta.
EXIT – Pri uspešnom završetku specifikovane akcije, kontrola se prenosi na
završetak složenog izraza koji sadrži izraz koji je prouzrokovao da
specifikovana akcija bude pokrenuta.
UNDO – Koristi se za vraćanje izmena SQL podataka, šema, ili SQL
promenljivih po izvršenju svakog SQL izraza sadržanog unutar SQL liste
izraza složenog izraza.
SIGNAL – Koristi se za postavljanje specifikovanog uslova.
RESIGNAL – Koristi se za prosleđivanje uslova drugom handler-u.
Literatura
• http://dsouflis.users.sourceforge.net/ovrimos3help/node21.html
• https://crate.io/docs/sql-99/en/latest/chapters/26.html
• https://silo.tips/download/persistent-stored-modules-stored-pro
cedures-psm
Hvala na pažnji!

You might also like