Forskel mellem UDF og gemt procedure i SQL Forskel mellem
UDF vs lagret procedure i SQL
SQL-miljøet leveres med forskellige komponenter, der arbejder med det til en vellykket levering af de opgaver, der er til rådighed. Der er den brugerdefinerede funktion og den gemte procedure, som er almindelig inden for SQL-miljøet. Det er forskellene mellem disse to, som ses nedenfor.
Forskelle
Den første forskel, der ses med den brugerdefinerede funktion er, at den er programmeret på en måde, at den skal returnere en værdi. Den lagrede procedure har noget godtgørelse for, om en værdi skal returneres eller ikke. Dette afhænger af, om den gemte procedure har en værdi, der skal returneres.
En anden forskel ses mellem den brugerdefinerede funktion og den lagrede procedure betragter udsagn. Den brugerdefinerede funktion tillader kun udvalgte udsagn, der skal læses, mens DML-sætninger ikke er tilladt. På den anden side tillader lagret procedure anvendelse af både udvalgte udsagn såvel som DML-sætningerne, som også kan opdateres og manipuleres.
Den brugerdefinerede funktion tillader kun indlæsning af parametre, men understøtter ikke output fra de samme parametre. Lagret procedure, tværtimod, understøtter både input og output parametre. UDF tillader heller ikke brugen af try-catch-blokke. Lagret procedure muliggør brugen af prøvetagningsblokke til undtagelseshåndtering.
UDF tillader heller ikke, at transaktioner finder sted inden for funktioner. Denne funktionalitet er tilgængelig i den gemte procedure, der muliggør transaktionshåndtering. UDF tillader heller ikke brugen af tabelvariabler, og det tillader heller ikke midlertidige tabeller. Lagret procedure tillader dog brugen af tabelvariabler samt en midlertidig tabel i den.
Når i en funktion tillader UDF ikke, at lagrede tabeller skal hentes fra den. Dette er helt anderledes, når det kommer til lagret procedure, som gør det muligt for funktionen at blive kaldt uden nogen begrænsning. Når med funktioner, tillader UDF ikke, at de nævnte funktioner bliver kaldt fra en valgt sætning. Lagret procedure indebærer også, at procedurer ikke kan kaldes fra Hvor / Vælg og Har udsagn. Exec eller Execute kan dog bruges til at ringe eller endda udføre den gemte procedure. Sidst men ikke mindst er, at UDF kan bruges til at skabe en tilslutningsklausul, der udnytter resultatet. I lagret procedure er dette ikke muligt, da der ikke er tilladt procedurer i en tilslutningsklausul. Det er også vigtigt at bemærke, at lagret procedure giver mulighed for at vende tilbage til nul eller lige n-værdier, mens UDF kun kan vende tilbage til en bestemt og forudindstillet værdi, som er forudindstillet.
Sammendrag
Det er obligatorisk for Funktionen at returnere en værdi, mens den ikke er lagret.
Vælg udsagn, der kun accepteres i UDF, mens DML-sætninger ikke kræves.
Lagret procedure accepterer eventuelle udsagn såvel som DML-udsagn.
UDF tillader kun indgange og ikke udgange.
Lagret procedure muliggør både indgange og udgange.
Fangstblokke kan ikke bruges i UDF, men kan bruges i lagret procedure.
Ingen transaktioner tilladt i funktioner i UDF, men i lagret procedure er de tilladt.
Kun tabelvariabler kan bruges i UDF og ikke midlertidige tabeller.
Lagret 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 tilslutningsklausul, mens lagrede procedurer ikke kan bruges i tilslutningsklausul.
Opbevaret procedure giver altid mulighed for at returnere til nul. UDF har tværtimod værdier, der skal komme tilbage til et forudbestemt punkt.