Uložená procedura: Porovnání verzí

Smazaný obsah Přidaný obsah
Bota47 (diskuse | příspěvky)
m robot přidal: de, es, fr, it, ja, nl, pl, pt, ru
Dinybot (diskuse | příspěvky)
m robot: stylistické, typografické a kódové korekce podle specifikace
Řádek 1:
'''Uložená procedura''' (anglicky '''stored procedure''') je [[Databáze|databázový]] objekt, který neobsahuje data, ale část programu, který se nad daty v databázi má vykonávat.
 
== Co je uložená procedura ==
Uložená procedura je především '''[[procedura]]'''. Jedná se o část programu, který je (nebo by aspoň měl být) jasně funkčně oddělený od svého okolí, má interface (seznam parametrů) pro komunikaci s jinými moduly programu. Může mít vlastní lokální [[Proměnná|proměnné]] neviditelné pro ostatní části programu.
 
Řádek 8:
Pro psaní uložených procedur je obvykle používán specifický jazyk konkrétní databáze, který je rozšířením jejího dotazovacího jazyka (hezkým příkladem je pro databázi [[Oracle]] procedurální jazyk [[PL/SQL]], který je rozšířením klasického dotazovacího jazyka [[SQL]]).
 
== Proč ukládat procedury ==
=== Jednotné rozhraní ===
Použití uložených procedur vychází z faktu, že většina operací nad daty v databázi probíhá stejně bez ohledu na to, kdo operaci provádí.
 
'''Příklad:''' Pokud je třeba uložit do tabulky zákazníků nového zákazníka, tak se to z pohledu databáze děje stejně pro zákazníka internetového obchodu, pro zákazníka, kterého zadává pracovnice telefonického centra přes formulář programu napsaného například v [[C++]] , nebo pro zákazníky, kteří jsou vkládáni automaticky na základě textového reportu, který přijde každý den z "kamenných"„kamenných“ prodejních míst a je zpracováván pomocí programu napsaného v [[PowerBuilder|PowerBuilderu]]u. Je tedy celkem dobrý důvod, aby existovala uložená procedura "Zapiš„Zapiš nového zákazníka"zákazníka“, kterou by mohly volat všechny tři výše uvedené aplikace - alternativou bez uložené procedury by bylo, že bych podobnou proceduru musel napsat ve třech verzích - jednou v C++, jednou v Power Builderu a jednou v rámci programu pro internetový obchod (třeba [[ASP]] nebo [[PHP]]).
 
=== Skrytí datových operací ===
Druhou výhodou použití uložených procedur je, že se nemusím (v programu na "klientské"„klientské“ straně) zabývat tím, jak jsou data uložena v konkrétních tabulkách. V našem případě je mi jedno, jak si databáze uvnitř pamatuje zákazníky - prostě zadám jako parametr procedury jméno, příjmení, číslo kreditky a co si zákazník koupil - a databáze (resp. její uložená procedura) si to nějak přebere.
 
Uložené procedury se v případě databázových aplikací staly základním kamenem pro realizaci architektury [[klient/server]], kdy je na jedné straně (klientská část) realizována v běžném procedurálním programovacím jazyku komunikace s uživatelem (formuláře nebo třeba webové stránky) a na druhé straně (serverová část) je pomocí uložených procedur realizována správa dat v relační databázi. Obě části (klientská a serverová) mezi sebou komunikují přes co nejjednodušší rozhraní - voláním uložených procedur.
 
== Podívejte se také na ==
*[[databáze]]
*[[trigger (databáze)]]