UDF vs lagret prosedyre i SQL
SQL-miljøet kommer med ulike komponenter som arbeider med det for vellykket levering av oppgavene. Det er den brukerdefinerte funksjonen og den lagrede prosedyren, som er vanlig i SQL-miljøet. Det er forskjellene mellom disse to som er omtalt nedenfor.
forskjeller
Den første forskjellen som ses med den brukerdefinerte funksjonen er at den er programmert på en måte at den må returnere en verdi. Den lagrede prosedyren har noen tillatelse for å returnere en verdi eller ikke. Dette avhenger av om den lagrede prosedyren har en verdi å returnere.
En annen forskjell som ses mellom den brukerdefinerte funksjonen og den lagrede prosedyren, gjelder utsagn. Den brukerdefinerte funksjonen tillater bare at utvalgte setninger skal leses mens DML-setninger ikke er tillatt. På den annen side tillater lagret prosedyre bruk av både valgte setninger, samt DML-setningene, som også kan oppdateres og manipuleres.
Den brukerdefinerte funksjonen tillater bare inntasting av parametere, men støtter ikke utdata fra de samme parameterne. Lagret prosedyre, tvert imot, støtter både inn- og utgangsparametere. UDF tillater heller ikke bruk av prøvefeltblokker. Lagret prosedyre gir mulighet for bruk av prøvingsblokker for unntakshåndtering.
UDF tillater heller ikke at transaksjoner skjer innenfor funksjoner. Denne funksjonaliteten er tilgjengelig i den lagrede prosedyren som tillater transaksjonshåndtering. UDF tillater heller ikke bruk av tabellvariabler, og det tillater heller ikke midlertidige tabeller. Lagret prosedyre tillater imidlertid bruk av tabellvariabler samt en midlertidig tabell i den.
Når i en funksjon tillater UDF ikke at lagrede tabeller skal hentes fra den. Dette er ganske annerledes når det gjelder lagret prosedyre, noe som gjør det mulig å ringe funksjonen uten begrensning. Når med funksjoner, tillater UDF ikke at nevnte funksjoner skal hentes fra en valgt setning. Lagret prosedyre inneholder også at prosedyrer ikke kan kalles fra Hvor / Velg og Har uttalelser. Exec eller Execute kan imidlertid brukes til å ringe eller til og med utføre den lagrede prosedyren. Sist men ikke minst er det at UDF kan brukes til å skape en tilknytningsklausul, som utnytter resultatsettet. I lagret prosedyre er dette ikke mulig, ettersom ingen prosedyrer er tillatt i en tilslutningsklausul. Det er også viktig å merke seg at lagret prosedyre gjør det mulig å returnere til null eller til og med n-verdier, mens UDF bare kan returnere til en bestemt og forhåndsinnstilt verdi som er forhåndsinnstilt.
Sammendrag
Det er obligatorisk for funksjonen å returnere en verdi mens den ikke er for lagret prosedyre.
Velg setninger som bare aksepteres i UDF mens DML-setninger ikke kreves.
Lagret prosedyre godtar eventuelle setninger samt DML-setninger.
UDF tillater bare innganger og ikke utganger.
Lagret prosedyre gir både innganger og utganger.
Fangstblokker kan ikke brukes i UDF, men kan brukes i lagret prosedyre.
Ingen transaksjoner tillatt i funksjoner i UDF, men i lagret prosedyre er de tillatt.
Bare tabellvariabler kan brukes i UDF og ikke midlertidige tabeller.
Lagret prosedyre tillater både tabellvariabler og midlertidige tabeller.
UDF tillater ikke lagrede prosedyrer å bli kalt fra funksjoner mens lagrede prosedyrer tillater funksjonskalding.
UDF brukes i tilkoblingsklausul mens lagrede prosedyrer ikke kan brukes i tilslutningsklausul.
Lagret prosedyre vil alltid tillate tilbakestilling til null. UDF, tvert imot, har verdier som må komme tilbake til et forutbestemt punkt.