Rozdiel medzi UDF a uloženou procedúrou v SQL

UDF verzus uložená procedúra v SQL

Prostredie SQL prichádza s rôznymi komponentmi, ktoré s ním pracujú na úspešnom splnení úloh. Existuje užívateľsky definovaná funkcia a uložená procedúra, ktoré sú bežné v prostredí SQL. Nižšie sú uvedené rozdiely medzi týmito dvoma.

rozdiely

Prvý rozdiel, ktorý sa prejavuje pri funkcii definovanej používateľom, je ten, že je naprogramovaný tak, že musí vrátiť hodnotu. Uložená procedúra má určitý nárok na to, či hodnotu vrátiť alebo nie. Závisí to od toho, či má uložená procedúra vrátenú hodnotu.

Ďalší rozdiel medzi funkciou definovanou používateľom a uloženou procedúrou sa týka príkazov. Funkcia definovaná používateľom umožňuje čítať iba vybrané príkazy, zatiaľ čo príkazy DML nie sú povolené. Na druhej strane uložená procedúra umožňuje použitie oboch vybraných príkazov, ako aj príkazov DML, ktoré môžu byť tiež aktualizované a spracovávané.

Funkcia definovaná používateľom umožní iba zadávanie parametrov, ale nepodporuje výstup rovnakých parametrov. Uložená procedúra naopak podporuje vstupné aj výstupné parametre. UDF tiež neumožňuje použitie blokov vyskúšania. Uložená procedúra umožňuje použitie blokov try catch na spracovanie výnimiek.

UDF tiež neumožňuje, aby sa transakcie uskutočňovali v rámci funkcií. Táto funkcia je k dispozícii v uloženej procedúre, ktorá umožňuje spracovanie transakcií. UDF tiež neumožňuje použitie premenných tabuľky a neumožňuje ani dočasné tabuľky. Uložená procedúra však umožňuje použitie premenných tabuľky, ako aj dočasnej tabuľky.

Keď je funkcia vo funkcii, UDF neumožňuje volanie uložených tabuliek. Toto je úplne odlišné, pokiaľ ide o uloženú procedúru, ktorá umožňuje volanie funkcie bez obmedzenia. Ak je vo funkciách funkcia UDF, neumožňuje volanie uvedených funkcií z príkazu select. Uložená procedúra tiež platí, že procedúry nemožno volať z príkazov Where / Select a Having. Execute alebo Execute však možno použiť na volanie alebo dokonca vykonanie uloženej procedúry. V neposlednom rade je to, že UDF sa dá použiť na vytvorenie klauzuly join, pri využití sady výsledkov. V uloženej procedúre to nie je možné, pretože v klauzule join nie sú povolené žiadne postupy. Je tiež dôležité si uvedomiť, že uložená procedúra umožňuje návrat na nulové alebo dokonca n hodnoty, zatiaľ čo UDF sa môže vrátiť iba na jednu konkrétnu a predvolenú hodnotu, ktorá je predvolená.

zhrnutie

Pre Function je povinné vrátiť hodnotu, zatiaľ čo to nie je pre uloženú procedúru.
Vyberte príkazy akceptované iba v UDF, zatiaľ čo príkazy DML sa nevyžadujú.
Uložená procedúra akceptuje všetky príkazy, ako aj príkazy DML.
UDF povoľuje iba vstupy a nie výstupy.
Uložená procedúra umožňuje vstupy aj výstupy.
Bloky úlovkov nemôžu byť použité v UDF, ale môžu byť použité v uloženej procedúre.
Vo funkciách v UDF nie sú povolené žiadne transakcie, ale v uloženej procedúre sú povolené.
V tabuľkách UDF možno použiť iba premenné tabuľky, nie dočasné tabuľky.
Uložená procedúra umožňuje premenné tabuľky aj dočasné tabuľky.
UDF neumožňuje vyvolať uložené procedúry z funkcií, zatiaľ čo uložené procedúry umožňujú volanie funkcií.
UDF sa používa v klauzuli join, zatiaľ čo uložené procedúry nemožno použiť v klauzule join.
Uložená procedúra vždy umožní návrat na nulu. Naopak, UDF má hodnoty, ktoré sa musia vrátiť do vopred stanoveného bodu.