Skip to main content

Opprette lagrede prosedyrer for SQL Server

Web Programming - Computer Science for Business Leaders 2016 (April 2025)

Web Programming - Computer Science for Business Leaders 2016 (April 2025)
Anonim

Microsoft SQL Server gir den lagrede prosedyremekanismen for å forenkle databaseutviklingsprosessen ved å gruppere Transact-SQL-setninger i håndterbare blokker. Lagrede prosedyrer er verdsatt av de fleste SQL Server-utviklere som finner effektivitets- og sikkerhetsfordelene de høster, er vel verdt den forrige investeringen i tide.

Fordeler ved å bruke lagrede prosedyrer

Hvorfor skal en utvikler bruke lagrede prosedyrer?

Her er de viktigste fordelene ved denne teknologien:

  • Forkompilert utførelse: SQL Server samler hver lagret prosedyre en gang, og gjenbruker deretter utførelsesplanen. Dette resulterer i enorm ytelsesforbedring når lagrede prosedyrer kalles gjentatte ganger.
  • Redusert klient / server trafikk: Hvis nettverksbåndbredden er et problem i ditt miljø, vil du gjerne vite at lagrede prosedyrer kan redusere lange SQL-spørringer til en enkelt linje som overføres over ledningen.
  • Effektiv gjenbruk av kode og programmeringsabstraksjon: Lagrede prosedyrer kan brukes av flere brukere og klientprogrammer. Hvis du bruker dem på en planlagt måte, vil du finne at utviklingssyklusen tar mindre tid.
  • Forbedret sikkerhetskontroll: Du kan gi brukere tillatelse til å utføre en lagret prosedyre uavhengig av underliggende tabelltillatelser.

Lagrede prosedyrer ligner på brukerdefinerte funksjoner, men det er subtile forskjeller.

Struktur

Lagrede prosedyrer ligner konstruksjonene som er sett på andre programmeringsspråk.

De aksepterer data i form av inngangsparametere som er angitt på kjøretid. Disse inngangsparametrene (hvis implementert) benyttes i utførelsen av en serie utsagn som gir noe resultat. Dette resultatet returneres til det ringende miljøet ved bruk av et platesett, utgangsparametere og en returkode.

Det høres kanskje ut som en munnfull, men du finner at lagrede prosedyrer faktisk er ganske enkle.

Eksempel

La oss ta en titt på et praktisk eksempel relatert til tabellen med navnet, som vises nederst på denne siden. Denne informasjonen oppdateres i sanntid, og lagerforvaltere kontrollerer kontinuerlig nivået på produktene som er lagret på lageret og tilgjengelig for forsendelse. Tidligere har hver leder hatt spørsmål som ligner på følgende:

VELG produkt, mengdeFRA InventoryHvor lager = 'FL'

Dette resulterte i ineffektiv ytelse på SQL Server. Hver gang en lagerbehandler utførte spørringen, ble databaseserveren tvunget til å kompilere spørringen og utføre den fra bunnen av. Det var også pålagt lagerbehandleren å ha kunnskap om SQL og passende tillatelser for å få tilgang til tabellinformasjonen.I stedet kan prosessen forenkles ved bruk av en lagret prosedyre. Her er koden for en prosedyre kalt sp_GetInventory som henter lagernivåene for et gitt lager.

Lag prosedyre sp_GetInventory@location varchar (10)SOMVELG produkt, mengdeFRA InventoryHvor lager = @location

Florida-lageradministratoren kan da få tilgang til lagernivå ved å utstede kommandoen:

EXECUTE sp_GetInventory 'FL'

Lagerbehandleren i New York kan bruke samme lagrede prosedyre for å få tilgang til områdets beholdning:

EXECUTE sp_GetInventory 'NY'

Gitt, dette er et enkelt eksempel, men fordelene med abstraksjon kan ses her. Lagerbehandleren trenger ikke å forstå SQL eller den indre arbeidet i prosedyren. Fra et ytelsesperspektiv arbeider den lagrede prosessen med underverk. SQL Server oppretter en utførelsesplan en gang og reutilizes den på nytt ved å plugge inn de riktige parametrene ved kjøretid.Nå som du har lært fordelene med lagrede prosedyrer, kom deg ut og bruk dem.

Prøv noen eksempler og måle ytelsesforbedringer oppnådd - du vil bli overrasket!

Inventory Table

IDProduktLagerMengde
142Grønne bønnerNY100
214erterFL200
825KornNY140
512Lima bønnerNY180
491tomaterFL80
379VannmelonFL85