Jeg har lært funksjoner og lagret prosedyre ganske lenge, men jeg vet ikke hvorfor og når jeg skal bruke en funksjon eller en lagret prosedyre. De ser like ut for meg, kanskje fordi jeg er litt nybegynner om det.
Kan noen fortelle meg hvorfor?
Funksjoner er beregnede verdier og kan ikke utføre permanente miljøendringer i SQL Server (dvs. ingen INSERT- eller UPDATE-setninger er tillatt).
En funksjon kan brukes inline i SQL-setninger hvis den returnerer en skalar verdi, eller kan kobles på hvis den returnerer et resultatsett.
Et poeng verdt å merke seg fra kommentarer, som oppsummerer svaret. Takk til @Sean K Anderson:
Funksjoner følger datasikkerhetsdefinisjonen ved at de MÅ returnere en verdi og ikke kan endre dataene de mottar som parametere (argumentene). Funksjoner har ikke lov til å endre noe, må ha minst én parameter, og de må returnere en verdi. Lagret procs trenger ikke å ha en parameter, kan endre databaseobjekter, og trenger ikke å returnere en verdi.
Skriv en brukerdefinert funksjon når du vil beregne og returnere en verdi for bruk i andre SQL-setninger; skriv en lagret prosedyre når du i stedet vil gruppere et muligens komplekst sett med SQL-setninger. Dette er tross alt to ganske forskjellige brukstilfeller!
For å avgjøre når du skal bruke hva følgende punkter kan være til hjelp
Lagrede prosedyrer kan ikke returnere en tabellvariabel der som funksjon kan gjøre det.
Du kan bruke lagrede prosedyrer for å endre servermiljøparametrene der du ikke kan bruke funksjoner.
Skål