Skip to main content

Oprettelse af lagrede procedurer til din SQL Server

Views og Stored Procedure (Kan 2024)

Views og Stored Procedure (Kan 2024)
Anonim

Microsoft SQL Server giver den lagrede proceduremekanisme for at forenkle databaseudviklingsprocessen ved at gruppere Transact-SQL-sætninger i håndterbare blokke. Lagrede procedurer værdsættes af de fleste SQL Server-udviklere, der finder de effektivitets- og sikkerhedsmæssige fordele, de høster, er værd at investere i forvejen i tide.

Fordele ved brug af lagrede procedurer

Hvorfor skal en udvikler bruge lagrede procedurer?

Her er de vigtigste fordele ved denne teknologi:

  • Forkompileret udførelse: SQL Server kompilerer hver gemt procedure en gang og genbruger udførelsesplanen igen. Dette resulterer i enorm præstationsforøgelse, når lagrede procedurer kaldes gentagne gange.
  • Reduceret klient / server trafik: Hvis netværkets båndbredde er et problem i dit miljø, vil du være glad for at lære, at lagrede procedurer kan reducere lange SQL-forespørgsler til en enkelt linje, der overføres over ledningen.
  • Effektiv genbrug af kode og programmeringsabstraktion: Lagrede procedurer kan bruges af flere brugere og klientprogrammer. Hvis du udnytter dem på en planlagt måde, finder du udviklingscyklussen tager mindre tid.
  • Forbedret sikkerhedskontrol: Du kan give brugerne tilladelse til at udføre en lagret procedure uafhængigt af underliggende bordtilladelser.

Lagrede procedurer svarer til brugerdefinerede funktioner, men der er diskrete forskelle.

Struktur

Lagrede procedurer ligner de konstruktioner, der ses på andre programmeringssprog.

De accepterer data i form af inputparametre, der er angivet på udførelsestidspunktet. Disse indgangsparametre (hvis implementeret) benyttes i udførelsen af ​​en række udsagn, som giver noget resultat. Dette resultat returneres til det kaldende miljø ved hjælp af et recordset, output parametere og en returkode.

Det kan lyde som en mundfuld, men du vil opdage, at lagrede procedurer faktisk er ret enkle.

Eksempel

Lad os tage et kig på et praktisk eksempel relateret til den tabelopstillede oversigt vist nederst på denne side. Disse oplysninger opdateres i realtid, og lagerchefer kontrollerer løbende niveauet af produkter, der er lagret på deres lager og er tilgængelige for forsendelse. Tidligere ville hver leder køre spørgsmål svarende til følgende:

VELG produkt, mængdeFRA OpgørelseHVOR Lagerhus = 'FL'

Dette resulterede i ineffektiv ydeevne på SQL Server. Hver gang en lagerleder udførte forespørgslen, blev databaseserveren tvunget til at genkompilere forespørgslen og udføre den fra bunden. Det krævede også, at lageradministratoren havde kendskab til SQL og passende tilladelser for at få adgang til tabeloplysningerne.I stedet kan processen forenkles ved brug af en gemt procedure. Her er koden til en procedure kaldet sp_GetInventory, der henter lagerstyringsniveauet for et givet lager.

CREATE PROCEDURE sp_GetInventory@location varchar (10)SOMVELG produkt, mængdeFRA OpgørelseHvor lager = @location

Florida Warehouse Manager kan derefter få adgang til lagerniveauer ved at udstede kommandoen:

EXECUTE sp_GetInventory 'FL'

Warehouse Manager i New York kan bruge den samme gemte procedure for at få adgang til områdets opgørelse:

EXECUTE sp_GetInventory 'NY'

Indrømmet, dette er et simpelt eksempel, men fordelene ved abstraktion kan ses her. Lagerbehandleren behøver ikke at forstå SQL eller procedurens indre arbejde. Fra et præstationsperspektiv fungerer den lagrede procedure under. SQL Server opretter en eksekutionsplan en gang og genbruger den igen ved at tilslutte de relevante parametre på udførelsestidspunktet.Nu hvor du har lært fordelene ved lagrede procedurer, skal du komme ud og bruge dem.

Prøv et par eksempler og måler de opnåede præstationsforbedringer - du vil blive forbløffet!

Opgørelse tabel

IDProduktLagerAntal
142Grønne bønnerNY100
214ærterFL200
825majsNY140
512Lima bønnerNY180
491tomaterFL80
379VandmelonFL85