Lagrede procedurer i SQL | Et overblik

I denne blog vil vi diskutere lagrede procedurer i SQL, som du kan bruge til at gemme et sæt kode og bruge det gentagne gange, når du har brug for det. Lagrede procedurer ligner visninger. Du kan dog udføre som DROP, TRUNCATE, DELETE osv. med lagrede procedurer, som du ikke kan udføre med visninger.

Lagrede procedurer er også præ-kompileret, så det kører hurtigere end visninger. Det minimerer også mængden af ​​data, der sendes til databaseserveren.

Indholdsfortegnelse

Syntaks for lagrede procedurer i SQL: Uden parametre

For at oprette en lagret procedure uden parametre, skal du starte med CREATE- funktionen. Tilføj derefter PROC- funktionen, skriv procedurenavnet lige efter, og tilføj AS -funktionen.

Lagrede procedurer i SQL |  Et overblik

Oprettelse af en lagret procedure i svarer til at oprette tabeller og visninger. Forskellen er dog i processen med at få data.

For eksempel, hvis vi ønsker at hente data fra en visning, bruger vi " SELECT * FROM view_name ." På den anden side, til lagrede procedurer, bruger vi EXEC, som betyder "udfør", og skriv derefter navnet på den lagrede procedure efter.

Lagrede procedurer i SQL |  Et overblik

Når vi udfører en lagret procedure , vil den også hente oplysningerne frem baseret på de instruktioner eller kommandoer, du har tilføjet.

Syntaks for lagrede procedurer i SQL: Med parametre

Lad os flytte til . Processen ligner det tidligere eksempel, som jeg demonstrerede. Den eneste forskel er, at du skal inkludere parametrene før AS- funktionen og også datatypen lige efter.

Lagrede procedurer i SQL |  Et overblik

Du kan også bruge den parameter du har erklæret i oprettelsen af ​​den lagrede procedure i dine kommandoer. Dette er for at du kan spare tid ved at indtaste flere værdier. For eksempel brugte vi @custid eller parameteren i stedet for manuelt at skrive customerID1 , customerID2 , og så videre for at undgå at have et langt sæt kode.

Lagrede procedurer i SQL |  Et overblik

Bemærk venligst, at når du bruger eller inkluderer en parameter, er det vigtigt at bruge @ -symbolet. Du kan også inkludere så mange parametre, du vil, ikke kun én. Sådan udfører vi lagrede procedurer med parametre.

Lagrede procedurer i SQL |  Et overblik

Som du kan bemærke, brugte vi også parameteren med en værdi lig med 1 til at udføre den lagrede procedure. Dette vil kun bringe oplysningerne fra custid1 .

Eksempelscenarie af lagrede procedurer i SSMS

Lad os få flere eksempler på lagrede procedurer i SQL. I første omgang vil jeg oprette et eksempel på en lagret procedure ved at bruge den fremhævede kommando nedenfor.

Lagrede procedurer i SQL |  Et overblik

Til navngivningskonvention ved oprettelse af en lagret procedure, bruger vi normalt "usp" eller "sp" for at angive, at dette er en lagret procedure. Hvis du undrer dig over, hvad "usp" betyder, står det blot for brugerdefineret lagret procedure. 

Dernæst skal vi skrive forespørgsler til den lagrede procedure, der skal behandles, når den udføres.

Lagrede procedurer i SQL |  Et overblik

Forespørgslerne i det foregående eksempel vil simpelthen fjerne tabellen med navnet dbo.stageOrders . Derefter vil den genskabe dbo.stageOrders med dataene fra tabellen Sales.SalesOrderHeader

Lad os oprette denne lagrede procedure ved at fremhæve følgende kode og klikke på knappen Udfør .

Lagrede procedurer i SQL |  Et overblik

Derefter skulle du se en besked som denne.

Lagrede procedurer i SQL |  Et overblik

Så vil vi nu udføre den lagrede procedure ved at køre EXEC usp_TEST .

Lagrede procedurer i SQL |  Et overblik

Efter udførelse af den lagrede procedure usp_TEST skulle dbo.stageOrders nu have dataene fra Sales.SalesOrderHeader . Lad os tjekke indholdet af dbo.stageOrders ved at køre kommandoen nedenfor.

Lagrede procedurer i SQL |  Et overblik

Som følge heraf er disse data, som vi oprettede i dbo.stageOrders baseret på de kommandoer, vi har tilføjet til vores lagrede procedure.

Lagrede procedurer i SQL |  Et overblik

Andet eksempelscenarie

Lad os gå videre til et andet eksempel. Denne gang ønsker jeg ikke at droppe tabellen dbo.stageOrders og genskabe den samme tabel med data, der kommer fra tabellen Sales.SalesOrderHeader .

I stedet vil jeg bare have, at dataene fra Sales.SalesOrderHeader-tabellen skal vises, hver gang jeg udfører den lagrede procedure " usp_TEST " .

For at udføre dette skal jeg foretage ændringer i den nyligt oprettede lagrede procedure ved at bruge ALTER -sætningen.

Lagrede procedurer i SQL |  Et overblik

I dette eksempel brugte vi ALTER- sætningen, som bruges til at ændre vores lagrede procedure. Du kan også anvende dette på visninger og tabeller. Når vi har kørt koden i skærmbilledet ovenfor, skulle den ændre de forespørgsler, der skal behandles af vores lagrede procedure.

Denne gang vil den ikke genskabe nogen tabel, som vi gjorde tidligere. Hvis vi udfører " usp_TEST ," vil det blot bringe dataene fra tabellen Sales.SalesOrderHeader .

Lagrede procedurer i SQL |  Et overblik

Lagrede procedurer i SQL |  Et overblik

Tredje eksempelscenarie

Lad os tage et andet eksempel. Denne gang genbruger vi tabellen dbo.stageOrders, som vi havde i vores første eksempel på oprettelse af en lagret procedure i SSMS . Vi starter med dette eksempel ved at vælge tabellen dbo.stageOrders. 

Lagrede procedurer i SQL |  Et overblik

Resultaterne ved valg af alle data fra dbo.stageOrders skulle være sådan her.

Lagrede procedurer i SQL |  Et overblik

Lad os nu tømme tabellen dbo.stageOrders ved at udføre usp_TEST . Det kan vi gøre ved at tilføje følgende kommando.

Lagrede procedurer i SQL |  Et overblik

Efter at have tilføjet kommandoen TRUNCATE TABLE , skal vi opdatere usp_TEST .

Lagrede procedurer i SQL |  Et overblik

Derefter skal der vises en meddelelse, der siger , at kommandoer er gennemført med succes . Så udfører vi usp_TEST igen.

Lagrede procedurer i SQL |  Et overblik

Ved udførelse af usp_TEST vil den vise alle posterne fra Sales.SalesOrderHeader og også tømme tabellen dbo.stageOrders

Lagrede procedurer i SQL |  Et overblik

For at kontrollere, om tabellen dbo.stageOrders er tom, skal vi vælge den ved at bruge følgende kommando og udføre.

Lagrede procedurer i SQL |  Et overblik

Når vi kører koden ovenfor, kan vi se, at dbo.stageOrders-tabellen nu er tom. Dette skyldes kommandoen TRUNCATE TABLE , som vi har brugt til at opdatere usp_TEST .

Lagrede procedurer i SQL |  Et overblik

Placering af gemte lagrede procedurer i SQL

Hvis du vil se, hvor den lagrede procedure bliver gemt, skal du gå til Objekt Explorer- panelet i venstre side og klikke på " + "-ikonet før den database, du arbejder på.

Lagrede procedurer i SQL |  Et overblik

Højreklik derefter på Programmerbarhed og vælg Opdater .

Lagrede procedurer i SQL |  Et overblik

Lagrede procedurer i SQL |  Et overblik

Udvid mappen eller gruppen Programmerbarhed ved at klikke på " + "-ikonet. Udvid derefter gruppen Stored Procedures ved at udføre det samme trin. Inde i gruppen Stored Procedures bør du se dbo.usp_TEST .

Lagrede procedurer i SQL |  Et overblik

Lagrede procedurer i SQL |  Et overblik

Hvis du vil kontrollere, hvilke kommandoer eller forespørgsler en specifik lagret procedure i SQL udfører, kan du højreklikke på en lagret procedure og følge trinene i skærmbilledet nedenfor.

Lagrede procedurer i SQL |  Et overblik

Derefter åbner den den lagrede procedure i en anden fane, hvor du kan se kommandoerne i den. Sådan ser dbo.usp_TEST ud, når den åbnes.

Lagrede procedurer i SQL |  Et overblik

Som du kan se, er der nogle standardkommandoer før CREATE -sætningen. Du kan simpelthen slette det, hvis du vil. 

Lagrede procedurer i SQL |  Et overblik

Nu ved du, hvordan du kontrollerer, hvilke kommandoer en lagret procedure i SQL udfører.

Oprettelse af en lagret procedure i SQL med parametre

Dernæst skal vi oprette en lagret procedure med parametre. For eksempel vil vi bruge følgende kode til at oprette en ny lagret procedure.

Lagrede procedurer i SQL |  Et overblik

I eksempelkoden brugte jeg den samme proces til at oprette en lagret procedure ved navn usp_GetCustomer . Derefter tilføjede jeg en parameter, som er @CustomerID med inputtypen INT .

Bemærk, at når du først har tilføjet en parameter i oprettelsen af ​​en lagret procedure, skal du altid angive en parameter, når du skal udføre en kommando.

Lad os se, hvad der vil ske, hvis vi udfører usp_GetCustomer uden at angive en parameter.

Lagrede procedurer i SQL |  Et overblik

Ved udførelse af usp_GetCustomer uden en parameter, kom der en fejlmeddelelse. Sådan ville det se ud, hvis vi udfører usp_GetCustomer med en parameter.

Lagrede procedurer i SQL |  Et overblik

Med en parameter angivet, er vi i stand til at få et korrekt resultat i at udføre vores lagrede procedure .

Oprettelse af en lagret procedure med en standardværdi

Hvis du vil undgå at modtage en fejlmeddelelse ved udførelse af en lagret procedure med en parameter, kan du indstille en standardværdi, der vil fungere som en standardparameter.

For eksempel vil vi oprette en lagret procedure ved navn usp_GetOrdersByYear .

Så vil jeg tilføje en parameter @OrderYear med inputtypen " INT " og en standardværdi, der er lig med 2011 .

Lagrede procedurer i SQL |  Et overblik

Hvis vi udfører usp_GetOrdersByYear uden en parameter angivet, vil den vise poster med år 2011 .

Lagrede procedurer i SQL |  Et overblik

Lagrede procedurer i SQL |  Et overblik

På den anden side, hvis vi udfører usp_GetOrdersByYear med 2014 som en given parameter, skulle den vise poster med år 2014 .

Lagrede procedurer i SQL |  Et overblik

Lagrede procedurer i SQL |  Et overblik

Sådan udnytter du lagrede procedurer i dine daglige datahåndteringsopgaver.



Konklusion

Tager du alt i betragtning, har du lært, hvad en lagret procedure i SQL er og dens formål. Vi har også diskuteret ALTER- sætningen, der bruges til at foretage ændringer eller opdateringer i en nuværende lagret procedure.

Derudover har du lært, at der er forskellige metoder til at oprette lagrede procedurer i SQL og lært, hvordan du undgår at modtage fejl, når du udfører en lagret procedure ved at angive en standardværdi.

Vigtigst er det, at du har lært at bruge lagrede procedurer til at gemme sæt af kommandoer for at undgå at køre lange sæt kode gentagne gange. Som en sidste påmindelse, glem ikke at bruge " @ " symbolet, når du angiver en parameter.

Alt det bedste,

Hafiz


Hvad er Power Query & M Language: En detaljeret oversigt

Hvad er Power Query & M Language: En detaljeret oversigt

Denne vejledning giver et overblik over Power Query Editor og M-sproget inde på LuckyTemplates-skrivebordet.

Opret en sideinddelt rapport: Tilføjelse af tekster og billeder

Opret en sideinddelt rapport: Tilføjelse af tekster og billeder

Lær, hvordan du opretter en sideinddelt rapport, tilføjer tekster og billeder og derefter eksporterer din rapport til forskellige dokumentformater.

SharePoint Automate-funktionen | En introduktion

SharePoint Automate-funktionen | En introduktion

Lær, hvordan du bruger SharePoint-automatiseringsfunktionen til at skabe arbejdsgange og hjælpe dig med at mikrostyre SharePoint-brugere, -biblioteker og -lister.

Løs en dataanalyseudfordring med LuckyTemplates Accelerator

Løs en dataanalyseudfordring med LuckyTemplates Accelerator

Udvid dine rapportudviklingsevner ved at deltage i en dataanalyseudfordring. Acceleratoren kan hjælpe dig med at blive LuckyTemplates-superbruger!

Løbende totaler i LuckyTemplates ved hjælp af DAX

Løbende totaler i LuckyTemplates ved hjælp af DAX

Lær, hvordan du beregner løbende totaler i LuckyTemplates ved hjælp af DAX. Løbende totaler giver dig mulighed for ikke at blive fanget af et individuelt resultat.

LuckyTemplates Dax-variabler er konstante: Hvad betyder det?

LuckyTemplates Dax-variabler er konstante: Hvad betyder det?

Forstå konceptet med variabler i DAX i LuckyTemplates og betydningen af ​​variabler for, hvordan dine mål beregnes.

LuckyTemplates hældningsdiagram: en oversigt

LuckyTemplates hældningsdiagram: en oversigt

Lær mere om det brugerdefinerede visuelle kaldet LuckyTemplates Slope-diagrammet, som bruges til at vise stigning/fald for en enkelt eller flere metrics.

LuckyTemplates farvetemaer til ensartede visualiseringer

LuckyTemplates farvetemaer til ensartede visualiseringer

Opdag farvetemaerne i LuckyTemplates. Disse er afgørende for, at dine rapporter og visualiseringer kan se ud og fungere problemfrit.

Beregning af gennemsnit i LuckyTemplates: Isolering af resultater på ugedage eller weekender ved hjælp af DAX

Beregning af gennemsnit i LuckyTemplates: Isolering af resultater på ugedage eller weekender ved hjælp af DAX

Beregning af et gennemsnit i LuckyTemplates kan gøres på mange måder for at give dig præcise oplysninger til dine virksomhedsrapporter.

LuckyTemplates tema | LuckyTemplates Desktop Standard Theming

LuckyTemplates tema | LuckyTemplates Desktop Standard Theming

Lad os dykke ned i Standard LuckyTemplates-temaer og gennemgå nogle af de funktioner, der er indbygget i selve LuckyTemplates Desktop-applikationen.