Lagrade procedurer i SQL | En översikt

I den här bloggen kommer vi att diskutera lagrade procedurer i SQL som du kan använda för att spara en uppsättning kod och använda den upprepade gånger när du behöver den. Lagrade procedurer liknar vyer. Däremot kan du utföra såsom DROP, TRUNCATE, DELETE, etc. med lagrade procedurer som du inte kan utföra med vyer.

Lagrade procedurer är också förkompilerade så att de går snabbare än vyer. Det minimerar också mängden data som skickas till databasservern.

Innehållsförteckning

Syntax för lagrade procedurer i SQL: Utan parametrar

För att skapa en lagrad procedur utan parametrar måste du börja med CREATE -funktionen. Lägg sedan till PROC- funktionen, skriv procedurens namn direkt efter och lägg till AS -funktionen.

Lagrade procedurer i SQL |  En översikt

Att skapa en lagrad procedur i liknar att skapa tabeller och vyer. Skillnaden är dock i processen att få data.

Om vi ​​till exempel vill hämta data från en vy använder vi " SELECT * FROM view_name ." Å andra sidan, för lagrade procedurer, använder vi EXEC som betyder "exekvera" och skriv sedan in den lagrade procedurens namn efter.

Lagrade procedurer i SQL |  En översikt

När vi kör en lagrad procedur kommer den också att ta fram informationen baserat på instruktionerna eller kommandona som du har lagt till.

Syntax för lagrade procedurer i SQL: med parametrar

Låt oss gå till . Processen liknar det tidigare exemplet som jag visade. Den enda skillnaden är att du måste inkludera parametrarna före AS- funktionen och även datatypen direkt efter.

Lagrade procedurer i SQL |  En översikt

Du kan också använda parametern du har deklarerat i skapandet av den lagrade proceduren i dina kommandon. Detta är för att du ska spara tid genom att ange flera värden. Till exempel, istället för att manuellt skriva customerID1 , customerID2 , och så vidare, använde vi @custid eller parametern för att undvika att ha en lång uppsättning kod.

Lagrade procedurer i SQL |  En översikt

Observera att när du använder eller inkluderar en parameter är det viktigt att använda @ -symbolen. Du kan också inkludera så många parametrar du vill, inte bara en. Så här utför vi lagrade procedurer med parametrar.

Lagrade procedurer i SQL |  En översikt

Som du märker använde vi också parametern med ett värde lika med 1 vid exekvering av den lagrade proceduren. Detta kommer endast att ge information om custid1 .

Exempelscenario av lagrade procedurer i SSMS

Låt oss ha fler exempel på lagrade procedurer i SQL. I första hand kommer jag att skapa ett exempel på en lagrad procedur genom att använda det markerade kommandot nedan.

Lagrade procedurer i SQL |  En översikt

För namnkonvention när vi skapar en lagrad procedur använder vi vanligtvis "usp" eller "sp" för att indikera att detta är en lagrad procedur. Om du undrar vad "usp" betyder, står det helt enkelt för användardefinierad lagrad procedur. 

Därefter kommer vi att skriva frågor för den lagrade proceduren som ska bearbetas när den exekveras.

Lagrade procedurer i SQL |  En översikt

Frågorna i föregående exempel tar helt enkelt bort tabellen med namnet dbo.stageOrders . Sedan kommer den att återskapa dbo.stageOrders med data från tabellen  Sales.SalesOrderHeader .

Låt oss skapa denna lagrade procedur genom att markera följande kod och klicka på knappen Execute .

Lagrade procedurer i SQL |  En översikt

Efter det bör du se ett meddelande som detta.

Lagrade procedurer i SQL |  En översikt

Sedan kommer vi nu att köra den lagrade proceduren genom att köra EXEC usp_TEST .

Lagrade procedurer i SQL |  En översikt

Efter exekvering av den lagrade proceduren usp_TEST bör dbo.stageOrders nu ha data från Sales.SalesOrderHeader . Låt oss kontrollera innehållet i dbo.stageOrders genom att köra kommandot nedan.

Lagrade procedurer i SQL |  En översikt

Som ett resultat är dessa data som vi skapade i dbo.stageOrders baserat på de kommandon vi har lagt till i vår lagrade procedur.

Lagrade procedurer i SQL |  En översikt

Andra exempelscenariot

Låt oss gå vidare till ett annat exempel. Den här gången vill jag inte släppa tabellen dbo.stageOrders och återskapa samma tabell med data som kommer från tabellen Sales.SalesOrderHeader .

Istället vill jag bara att data från Sales.SalesOrderHeader-tabellen ska visas när jag kör den lagrade proceduren " usp_TEST " .

För att utföra detta måste jag göra ändringar i den nyligen skapade lagrade proceduren genom att använda ALTER -satsen.

Lagrade procedurer i SQL |  En översikt

I det här exemplet använde vi ALTER -satsen som används för att ändra vår lagrade procedur. Du kan även tillämpa detta på vyer och tabeller. När vi kört koden i skärmdumpen ovan bör den ändra frågorna som ska behandlas av vår lagrade procedur.

Den här gången kommer det inte att återskapa någon tabell som vi gjorde tidigare. Om vi ​​kör " usp_TEST ," kommer det bara att hämta data från tabellen Sales.SalesOrderHeader .

Lagrade procedurer i SQL |  En översikt

Lagrade procedurer i SQL |  En översikt

Tredje exempelscenariot

Låt oss ta ett annat exempel. Den här gången kommer vi att återanvända tabellen dbo.stageOrders som vi hade i vårt första exempel på att skapa en lagrad procedur i SSMS . Vi börjar med det här exemplet genom att välja tabellen dbo.stageOrders. 

Lagrade procedurer i SQL |  En översikt

Resultaten vid val av all data från dbo.stageOrders bör vara så här.

Lagrade procedurer i SQL |  En översikt

Låt oss nu tömma tabellen dbo.stageOrders genom att köra usp_TEST . Vi kan göra det genom att lägga till följande kommando.

Lagrade procedurer i SQL |  En översikt

Efter att ha lagt till kommandot TRUNCATE TABLE måste vi uppdatera usp_TEST .

Lagrade procedurer i SQL |  En översikt

Efter det ska ett meddelande som säger att kommandon har slutförts visas. Sedan kör vi usp_TEST igen.

Lagrade procedurer i SQL |  En översikt

När usp_TEST körs kommer den att visa alla poster från Sales.SalesOrderHeader och även tömma tabellen  dbo.stageOrders .

Lagrade procedurer i SQL |  En översikt

För att kontrollera om tabellen dbo.stageOrders är tom måste vi välja den genom att använda följande kommando och köra.

Lagrade procedurer i SQL |  En översikt

När vi kör koden ovan kan vi se att tabellen dbo.stageOrders nu är tom. Detta beror på kommandot TRUNCATE TABLE som vi har använt för att uppdatera usp_TEST .

Lagrade procedurer i SQL |  En översikt

Plats för sparade lagrade procedurer i SQL

Om du vill se var den lagrade proceduren sparas, gå till panelen Objektutforskare på vänster sida och klicka på " + "-ikonen före databasen som du arbetar med.

Lagrade procedurer i SQL |  En översikt

Högerklicka sedan på Programmerbarhet och välj Uppdatera .

Lagrade procedurer i SQL |  En översikt

Lagrade procedurer i SQL |  En översikt

Expandera mappen eller gruppen Programmerbarhet genom att klicka på ikonen " + ". Expandera sedan gruppen lagrade procedurer genom att göra samma steg. Inuti gruppen Stored Procedures bör du se dbo.usp_TEST .

Lagrade procedurer i SQL |  En översikt

Lagrade procedurer i SQL |  En översikt

Om du vill kontrollera vilka kommandon eller frågor en specifik lagrad procedur i SQL utför kan du högerklicka på en lagrad procedur och följa stegen i skärmdumpen nedan.

Lagrade procedurer i SQL |  En översikt

Efter det kommer den att öppna den lagrade proceduren på en annan flik där du kan se kommandona som finns i den. Så här ser dbo.usp_TEST ut när den öppnas.

Lagrade procedurer i SQL |  En översikt

Som du kan se finns det några standardkommandon före CREATE -satsen. Du kan helt enkelt ta bort det om du vill. 

Lagrade procedurer i SQL |  En översikt

Nu vet du hur du kontrollerar vilka kommandon en lagrad procedur i SQL utför.

Skapa en lagrad procedur i SQL med parametrar

Därefter ska vi skapa en lagrad procedur med parametrar. Till exempel kommer vi att använda följande kod för att skapa en ny lagrad procedur.

Lagrade procedurer i SQL |  En översikt

I exempelkoden använde jag samma process för att skapa en lagrad procedur som heter usp_GetCustomer . Sedan lade jag till en parameter som är @CustomerID med en ingångstyp av INT .

Observera att när du väl har lagt till en parameter för att skapa en lagrad procedur bör du alltid ange en parameter när du ska köra ett kommando.

Låt oss se vad som händer om vi kör usp_GetCustomer utan att ange en parameter.

Lagrade procedurer i SQL |  En översikt

Vid exekvering av usp_GetCustomer utan en parameter kom ett felmeddelande. Så här skulle det se ut om vi kör usp_GetCustomer med en parameter.

Lagrade procedurer i SQL |  En översikt

Med en parameter tillhandahållen kan vi få ett korrekt resultat när vi kör vår lagrade procedur .

Skapa en lagrad procedur med ett standardvärde

Om du vill undvika att få ett felmeddelande när du kör en lagrad procedur med en parameter, kan du ställa in ett standardvärde som kommer att fungera som en standardparameter.

Till exempel kommer vi att skapa en lagrad procedur som heter usp_GetOrdersByYear .

Sedan ska jag lägga till en parameter @OrderYear med ingångstypen " INT " och ett standardvärde som är lika med 2011 .

Lagrade procedurer i SQL |  En översikt

Om vi ​​kör usp_GetOrdersByYear utan en parameter angiven kommer den att visa poster med år 2011 .

Lagrade procedurer i SQL |  En översikt

Lagrade procedurer i SQL |  En översikt

Å andra sidan, om vi kör usp_GetOrdersByYear med 2014 som en given parameter, bör den visa poster med år 2014 .

Lagrade procedurer i SQL |  En översikt

Lagrade procedurer i SQL |  En översikt

Så här använder du lagrade procedurer i dina dagliga datahanteringsuppgifter.



Slutsats

Med allt i beräkningen har du lärt dig vad en lagrad procedur i SQL är och dess syfte. Vi har också diskuterat ALTER -satsen som används för att göra ändringar eller uppdateringar i en nuvarande lagrad procedur.

Dessutom har du lärt dig att det finns olika metoder för att skapa lagrade procedurer i SQL och lärt dig hur du undviker att ta emot fel när du kör en lagrad procedur genom att ange ett standardvärde.

Viktigast av allt, du har lärt dig att använda lagrade procedurer för att lagra uppsättningar av kommandon för att undvika att köra långa uppsättningar kod upprepade gånger. Som en sista påminnelse, glöm inte att använda " @ "-symbolen när du anger en parameter.

Med vänliga hälsningar,

Hafiz


Vad är Power Query & M Language: En detaljerad översikt

Vad är Power Query & M Language: En detaljerad översikt

Denna handledning ger en översikt över Power Query Editor och M-språket på LuckyTemplates-skrivbordet.

Skapa en paginerad rapport: Lägga till texter och bilder

Skapa en paginerad rapport: Lägga till texter och bilder

Lär dig hur du skapar en sidnumrerad rapport, lägger till texter och bilder och sedan exporterar din rapport till olika dokumentformat.

SharePoint Automate-funktionen | En introduktion

SharePoint Automate-funktionen | En introduktion

Lär dig hur du använder SharePoint-automatiseringsfunktionen för att skapa arbetsflöden och hjälpa dig att mikrohantera SharePoint-användare, bibliotek och listor.

Lös en dataanalysutmaning med LuckyTemplates Accelerator

Lös en dataanalysutmaning med LuckyTemplates Accelerator

Finslipa dina färdigheter i rapportutveckling genom att gå med i en dataanalysutmaning. Acceleratorn kan hjälpa dig att bli en LuckyTemplates superanvändare!

Löpande summor i LuckyTemplates med DAX

Löpande summor i LuckyTemplates med DAX

Lär dig hur du beräknar löpande summor i LuckyTemplates med DAX. Löpande summor låter dig inte fastna i ett individuellt resultat.

LuckyTemplates Dax-variabler är konstanta: Vad betyder detta?

LuckyTemplates Dax-variabler är konstanta: Vad betyder detta?

Förstå konceptet med variabler i DAX inom LuckyTemplates och konsekvenserna av variabler för hur dina mått beräknas.

LuckyTemplates Slope Chart: En översikt

LuckyTemplates Slope Chart: En översikt

Lär dig mer om den anpassade visual som kallas LuckyTemplates Slope-diagram, som används för att visa ökning/minskning för en enstaka eller flera mätvärden.

LuckyTemplates färgteman för enhetliga visualiseringar

LuckyTemplates färgteman för enhetliga visualiseringar

Upptäck färgteman i LuckyTemplates. Dessa är viktiga för att dina rapporter och visualiseringar ska se ut och fungera sömlöst.

Beräkna medelvärde i LuckyTemplates: Isolera veckodags- eller helgresultat med DAX

Beräkna medelvärde i LuckyTemplates: Isolera veckodags- eller helgresultat med DAX

Att beräkna ett genomsnitt i LuckyTemplates kan göras på många sätt för att ge dig exakt information för dina affärsrapporter.

LuckyTemplates Theming | LuckyTemplates Desktop Standard Theming

LuckyTemplates Theming | LuckyTemplates Desktop Standard Theming

Låt oss fördjupa oss i Standard LuckyTemplates-teman och granska några av funktionerna som är inbyggda i själva LuckyTemplates Desktop-applikationen.