UDF vs glabātā procedūra SQL
SQL videi ir dažādi komponenti, kas ar to strādā, lai veiksmīgi izpildītu uzdevumus. Ir lietotāja definēta funkcija un saglabātā procedūra, kas ir izplatīta SQL vidē. Turpmāk apskatītas atšķirības starp šiem diviem.
Atšķirības
Pirmā atšķirība, kas tiek novērota lietotāja definētajā funkcijā, ir tā, ka tā ir ieprogrammēta tādā veidā, ka tai ir jāatgriež vērtība. Saglabātajai procedūrai ir zināma pielaide vērtības atgriešanai vai atgriešanai. Tas ir atkarīgs no tā, vai glabātajai procedūrai ir vērtība, kuru atgriezt.
Vēl viena atšķirība, kas novērota starp lietotāja definētu funkciju un saglabāto procedūru, attiecas uz paziņojumiem. Lietotāja noteiktā funkcija ļauj lasīt tikai atsevišķus paziņojumus, kamēr DML paziņojumi nav atļauti. No otras puses, glabātā procedūra ļauj izmantot gan atlasītos paziņojumus, gan DML paziņojumus, kurus var arī atjaunināt un manipulēt..
Lietotāja noteiktā funkcija atļaus tikai parametru ievadīšanu, bet neatbalsta to pašu parametru izvadi. Gluži pretēji, saglabātā procedūra atbalsta gan ievades, gan izvades parametrus. UDF arī neļauj izmantot izmēģināšanas blokus. Saglabātā procedūra ļauj izmantot “try catch” blokus izņēmumu apstrādei.
UDF arī neļauj darījumiem notikt funkciju ietvaros. Šī funkcionalitāte ir pieejama glabātajā procedūrā, kas ļauj veikt darījumus. UDF arī neļauj izmantot tabulas mainīgos, kā arī pagaidu tabulas. Saglabātā procedūra tomēr ļauj izmantot tabulas mainīgos, kā arī pagaidu tabulu tajā.
Darbojoties funkcijā, UDF neļauj no tā izsaukt saglabātās tabulas. Tas ir pavisam savādāk, ja runa ir par saglabāto procedūru, kas ļauj izsaukt funkciju bez jebkādiem ierobežojumiem. Izmantojot funkcijas, UDF neļauj izsaukt minētās funkcijas no atlasītā paziņojuma. Saglabātā procedūra arī uzskata, ka procedūras nevar izsaukt no kurienes / izvēles un kam ir paziņojumi. Izpildīt vai Izpildīt tomēr var izmantot, lai izsauktu vai pat izpildītu saglabāto procedūru. Pēdējais, bet ne mazāk svarīgais ir tas, ka UDF var izmantot, lai izveidotu pievienošanās klauzulu, izmantojot rezultātu kopu. Saglabātā procedūrā tas nav iespējams, jo pievienošanās klauzulā nav atļautas nekādas procedūras. Ir arī svarīgi atzīmēt, ka saglabātā procedūra ļauj atgriezties pie nulles vai pat n vērtībām, turpretim UDF var atgriezties tikai pie vienas noteiktas un iepriekš iestatītas vērtības, kas ir iepriekš iestatīta..
Kopsavilkums
Funkcijai Funkcija ir obligāti jāatgriež vērtība, kamēr tā nav saglabātajai procedūrai.
Atlasiet paziņojumus, kas pieņemti tikai UDF, bet DML paziņojumi nav nepieciešami.
Saglabātā procedūra pieņem visus paziņojumus, kā arī DML paziņojumus.
UDF pieļauj tikai ieejas, nevis izejas.
Saglabātā procedūra ļauj veikt gan ieejas, gan izejas.
Noņemšanas blokus nevar izmantot UDF, bet tos var izmantot glabātajā procedūrā.
Nav atļauts veikt darījumus funkcijās UDF, bet uzglabātā procedūrā tie ir atļauti.
UDF var izmantot tikai tabulas mainīgos, nevis pagaidu tabulas.
Saglabātā procedūra ļauj izmantot gan tabulas mainīgos, gan pagaidu tabulas.
UDF neļauj izsaukt saglabātās procedūras no funkcijām, kamēr saglabātās procedūras ļauj izsaukt funkcijas.
UDF tiek izmantots pievienošanās klauzulā, kamēr saglabātās procedūras nevar izmantot pievienošanās klauzulā.
Saglabātā procedūra vienmēr ļaus atgriezties pie nulles. UDF, gluži pretēji, ir vērtības, kurām ir jāatgriežas pie iepriekš noteikta punkta.