Rozdiel medzi uloženým postupom a funkciou

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ú,

  • Funkcie jedného riadku (vráti jeden výsledok pre každý riadok dopytu)

Existujú podkategórie funkcií jedného riadku.

  • Číselná funkcia (napr .: ABS, SIN, COS)
  • Znaková funkcia (napr .: CONCAT, INITCAP)
  • Funkcia dátumu a času (napr .: LAST_DAY, NEXT_DAY)
  • Funkcie konverzie (napr .: TO_CHAR, TO_DATE)
  • Funkcia zberu (napr .: KARTINALITA, SADA)
  • Agregované funkcie (Vráti jeden riadok na základe skupiny riadkov. Napr: AVG, SUM, MAX)
  • Analytické funkcie
  • Funkcie referencie objektov
  • Funkcie modelu
  • Funkcie definované používateľom

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.