Forskjell mellom UDF og lagret prosedyre i SQL Forskjellen mellom

Anonim

UDF vs lagret prosedyre i SQL

SQL-miljøet leveres med ulike komponenter som arbeider med det for vellykket levering av oppgavene ved hånden. 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 er sett 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 er sett 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 inngang av parametere, men støtter ikke utdata fra de samme parametrene. 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 oppstår 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 kun 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 er nødvendig.

Lagret prosedyre aksepterer eventuelle setninger samt DML-setninger.

UDF tillater kun 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 at funksjonene kalles.

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.