Forskel mellem UDF og gemt procedure i SQL

UDF vs lagret procedure i SQL

SQL-miljøet leveres med forskellige komponenter, der arbejder med det for en vellykket levering af de opgaver, der er til rådighed. Der er den brugerdefinerede funktion og den lagrede procedure, som er almindelige i SQL-miljøet. Det er forskellene mellem disse to, der gennemgås nedenfor.

Forskelle

Den første forskel, der ses med den brugerdefinerede funktion, er, at den er programmeret på en sådan måde, at den skal returnere en værdi. Den lagrede procedure har en vis mulighed for, om en værdi skal returneres eller ej. Dette afhænger af, om den gemte procedure har en værdi, der skal returneres.

En anden forskel set mellem den brugerdefinerede funktion og den lagrede procedure angår udsagn. Den brugerdefinerede funktion tillader kun, at markerede udsagn læses, mens DML-udsagn ikke er tilladt. På den anden side tillader lagret procedure brug af både udvalgte udsagn såvel som DML-sætninger, som også kan opdateres og manipuleres.

Den brugerdefinerede funktion tillader kun input af parametre, men understøtter ikke output af de samme parametre. Gemt procedure understøtter tværtimod både input- og outputparametre. UDF tillader heller ikke anvendelse af try-catch-blokke. Gemt procedure muliggør anvendelse af try-fangstblokke til undtagelseshåndtering.

UDF tillader heller ikke transaktioner inden for funktioner. Denne funktionalitet er tilgængelig i den lagrede procedure, der muliggør transaktionshåndtering. UDF tillader heller ikke brug af tabelvariabler, og det giver heller ikke mulighed for midlertidige tabeller. Gemt procedure muliggør imidlertid brug af tabelvariabler såvel som en midlertidig tabel i den.

Når du er i en funktion, tillader UDF ikke, at lagrede tabeller kan kaldes fra den. Dette er ganske anderledes, når det kommer til en lagret procedure, som gør det muligt at kalde funktionen uden nogen begrænsning. Når der er funktioner, tillader UDF ikke, at de nævnte funktioner kaldes fra en valgt erklæring. Gemt procedure hævder også, at procedurer ikke kan kaldes fra Hvor / Vælg og have erklæringer. Exec eller Execute kan imidlertid bruges til at ringe eller endda udføre den gemte procedure. Sidst men ikke mindst er, at UDF kan bruges til at oprette en join-klausul og udnytte resultatsættet. I den lagrede procedure er dette ikke muligt, da der ikke er tilladt nogen procedurer i en sammenlægningsklausul. Det er også vigtigt at bemærke, at gemt procedure giver mulighed for at vende tilbage til nul eller endda n-værdier, mens UDF kun kan vende tilbage til en bestemt og forudindstillet værdi, der er forudindstillet.

Resumé

Det er obligatorisk for Funktion at returnere en værdi, mens den ikke er til en gemt procedure.
Vælg udsagn, der kun er accepteret i UDF, mens DML-udsagn ikke kræves.
Gemt procedure accepterer udsagn såvel som DML-udsagn.
UDF tillader kun input og ikke output.
Gemt procedure giver mulighed for både input og output.
Fangstblokke kan ikke bruges i UDF, men kan bruges i en gemt procedure.
Ingen transaktioner tilladt i funktioner i UDF, men i en gemt procedure er de tilladt.
Kun tabelvariabler kan bruges i UDF og ikke midlertidige tabeller.
Gemt procedure giver mulighed for både tabelvariabler og midlertidige tabeller.
UDF tillader ikke, at lagrede procedurer kaldes fra funktioner, mens lagrede procedurer tillader opkald af funktioner.
UDF bruges i sammenføjningsklausul, mens gemte procedurer ikke kan bruges i sammenføjningsklausul.
Gemt procedure giver altid mulighed for at vende tilbage til nul. Tværtimod har UDF værdier, der skal vende tilbage til et forudbestemt punkt.