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_PrumCenaVyr
create 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