create procedure mp_pocetZaznOsoby
select count (id_os)from osoby
where prijmeni = 'Král';
exec mp_pocetZaznOsoby-
Uloženou proceduru si můžeme představit jako metodu na straně SQL serveru nebo jako dávkový příkaz.
-
můžeme ji pojmenovat a uložit a pak ji vyvolat pomocí jména na serveru nebo na klientu.
Výhody:
-
Předkompilované provedení → to má za následek zvýšení výkonu při provádění procedur
-
Snížení provozu klient/server, snížení komunikace k/s
-
Efektivní opětovné použití kódu a programovací abstrakce.
-
Procedury může využívat více uživatelů s klientskými programy, vývojový cyklus trvá méně času
-
Můžete udělit uživateli oprávnění k výkonu uložené procedury nezávisle na podkladové tabulce.
Nevýhody:
-
v Některých DB systémech bývá klon jazyka UP PL(PL SQL, transact sql což je nekonfortní jazyk).
-
Pro uložené procedury některých DB existují debugging (ladění krok za krokem) ale možnost profilování (sledování a analyzování výkonů) chybí.
-
UP nejsou přenositelné mezi databázemi (Různá hlediska pohledu zákazníka a obchodníka)
-
Uložené procedury mají přístupný zdrojový kód což není dobrá vlastnost pro dodavatele softwaru
-
Přesouvání aplikační logiky na databázovou vrstvu se aplikace znepřehledňuje, zejména je-li příliš složitá na to aby se tam mohla přenést veškerá aplikační logika.
-
když se používají uložené procedury důsledně na všechno( zavedení loginu, vznik tabulky, vytvoření vazby, atd…)
Procedury mohou mít parametry:
-
vstupní
-
výstupní
-
vstupní a výstupní dohromady
create procedure mp_pocetZaznOsoby
@id
As
select count (id_os)from osoby
where id_os = @id;
exec mp_pocetZaznOsoby 5;create procedure mp_PrumCenaVyr
@hodp float output
AS begin
select @hodp = avg(cenaKs) from vyrobky
print 'prumerna cena = '+ casT(@hodp as varchar(10))
end
exec mp_PrumCenaVyrcreate procedure mp_PrumCenaVyr
@hodp float output
AS begin
select @hodp = avg(cenaKs) from vyrobky inner join druhy
on vyrobky.id_dr = druhy.id_dr
print 'prumerna cena za druh: '+ cast(@hodp as varchar(10))
print 'za druh' + cast(@hodp as varchar(10))
end
exec mp_PrumCenaVyr