Uložená procedúra vs funkcia
Uložené procedúry a funkcie sú dva typy programovacích blokov. Obaja musia mať volacie mená. Tieto volacie mená sa používajú na ich volanie v inom programovom bloku, ako sú procedúry funkcií a balíčky alebo dotazy SQL. Oba tieto typy objektov akceptujú parametre a vykonávajú úlohy za nimi. Toto je syntax (v ORACLE) na vytvorenie uloženej procedúry,
vytvoriť alebo nahradiť procedurename procedúry (parametre)
ako
začať
Vyhlásenia;
výnimka
exception_handling
koniec;
A tu je syntax na vytvorenie funkcie (v ORACLE),
vytvorenie alebo nahradenie funkcie function_name (parametre)
return return_datatype
ako
začať
Vyhlásenia;
return return_value / variable;
výnimkou;
exception_handling;
koniec;
Uložené procedúry
Ako je uvedené vyššie, uložené procedúry sa nazývajú programovacie bloky. Prijímajú parametre ako vstup a postup používateľa podľa logiky postupu a poskytujú výsledok (alebo vykonávajú konkrétnu akciu). Tieto parametre môžu byť typu IN, OUT a INOUT. Deklarácie premenných, priradenia premenných, kontrolné príkazy, slučky, dotazy SQL a ďalšie funkcie / volania procedúr / balíkov môžu byť v tele procedúr..
funkcie
Funkcie sú tiež pomenované programovacie bloky, ktoré musia pomocou príkazu RETURN vrátiť hodnotu a predtým, ako vráti hodnotu, jej telo vykoná aj niektoré akcie (podľa danej logiky). Funkcie akceptujú aj parametre, ktoré sa majú spustiť. Funkcie je možné vyvolať vo vnútri dopytov. Keď sa funkcia volá vo vnútri SELECT dotazu, použije sa na každý riadok sady výsledkov dotazu SELECT. Existuje niekoľko kategórií funkcií ORACLE. Oni sú,
Existujú podkategórie funkcií jedného riadku.
Aký je rozdiel medzi funkciou a uloženou procedúrou? • Všetky funkcie musia vrátiť hodnotu pomocou príkazu RETURN. Uložené procedúry nevracajú hodnoty pomocou príkazu RETURN. Príkaz RETURN v rámci procedúry vráti svoju kontrolu volajúcemu programu. OUT parametre je možné použiť na vrátenie hodnôt z uložených procedúr. • Funkcie je možné volať do dopytov, ale uložené procedúry sa nemôžu v dotazoch použiť. • Na vytvorenie funkcie musí byť zahrnutý typ údajov RETURN, ale v uloženej procedúre DDL to tak nie je. |