En lagrad procedur i SQL är en grupp SQL-frågor som kan sparas och återanvändas flera gånger. Det är mycket användbart eftersom det minskar behovet av att skriva om SQL-frågor. Det förbättrar effektiviteten, återanvändbarheten och säkerheten i databashantering.
Användare kan också skicka parametrar till lagrade procedurer så att den lagrade proceduren kan agera på de passerade parametervärdena.
Lagrade procedurer skapas för att utföra en eller flera DML operationer på databasen. Det är inget annat än en grupp av SQL-satser som accepterar viss input i form av parametrar, utför någon uppgift och kanske inte returnerar ett värde.
Syntax
Två viktiga syntaxer för att använda lagrade procedurer i SQL är:
Syntax för att skapa en lagrad procedur
CREATE PROCEDURE procedure_name
(parameter1 datatyp, parameter2 datatyp, …)
SOM
BÖRJA
— SQL-satser som ska köras
SLUTET
Syntax för att exekvera den lagrade proceduren
EXEC procedurnamn parameter1_värde, parameter2_värde, ..
Parameter
Den viktigaste delen är parametrarna. Parametrar används för att skicka värden till proceduren. Det finns olika typer av parametrar, som är följande:
- BÖRJA: Det är detta som körs direkt eller så kan vi säga att det är en körbar del.
- SLUTET: Fram till detta kommer koden att exekveras.
Exempel på lagrad SQL-procedur
Låt oss titta på ett exempel på lagrad procedur i SQL för att förstå det bättre.
Föreställ dig en databas som heter SampleDB, en tabell med namnet Kunder med några exempeldata och en lagrad procedur som heter GetCustomersByCountry.
Den lagrade proceduren tar parametern Land och returnerar en lista över kunder från tabellen Kunder som matchar det angivna landet. Slutligen exekveras den lagrade proceduren med parametern Sri Lanka för att hämta listan över kunder från Sri Lanka.
Fråga:
-- Create a new database named 'SampleDB' CREATE DATABASE SampleDB; -- Switch to the new database USE SampleDB; -- Create a new table named 'Customers' CREATE TABLE Customers ( CustomerID INT PRIMARY KEY, CustomerName VARCHAR(50), ContactName VARCHAR(50), Country VARCHAR(50) ); -- Insert some sample data into the Customers table INSERT INTO Customers (CustomerID, CustomerName, ContactName, Country) VALUES (1, 'Shubham', 'Thakur', 'India'), (2, 'Aman ', 'Chopra', 'Australia'), (3, 'Naveen', 'Tulasi', 'Sri lanka'), (4, 'Aditya', 'Arpan', 'Austria'), (5, 'Nishant. Salchichas S.A.', 'Jain', 'Spain'); -- Create a stored procedure named 'GetCustomersByCountry' CREATE PROCEDURE GetCustomersByCountry @Country VARCHAR(50) AS BEGIN SELECT CustomerName, ContactName FROM Customers WHERE Country = @Country; END; -- Execute the stored procedure with parameter 'Sri lanka' EXEC GetCustomersByCountry @Country = 'Sri lanka';>
Notera: Du måste se till att användarkontot har nödvändiga rättigheter för att skapa en databas. Du kan prova att logga in som en annan användare med administrativa rättigheter eller kontakta databasadministratören för att ge de nödvändiga behörigheterna till ditt användarkonto. Om du använder en molnbaserad databastjänst, se till att du har konfigurerat användarkontot och dess behörigheter korrekt.
Produktion:
| Köparens namn | Kontaktnamn |
|---|---|
| Naveen | Tulasi |
Viktiga punkter om SQL-lagrade procedurer
- En lagrad procedur är en förberedd SQL-kod som du kan spara, så att koden kan återanvändas om och om igen.
- Lagrade procedurer gör att kod som används upprepade gånger kan sparas i databasen och köras därifrån, snarare än från klienten. Detta ger en mer modulär metod för databasdesign.
- Eftersom lagrade procedurer kompileras och lagras i databasen är de mycket effektiva. SQL Server kompilerar varje lagrad procedur en gång och återanvänder sedan exekveringsplanen. Detta leder till enorma prestandaökningar när lagrade procedurer anropas upprepade gånger.
- Lagrade procedurer ger bättre säkerhet för dina data. Användare kan köra en lagrad procedur utan att behöva köra någon av satserna direkt. Därför kan en användare ges tillstånd att utföra en lagrad procedur utan att ha några behörigheter på de underliggande tabellerna.
- Lagrade procedurer kan minska nätverkstrafik och latens, vilket ökar applikationens prestanda. Ett enda anrop till en lagrad procedur kan exekvera många satser.
- Lagrade procedurer har bättre stöd för felhantering.
- Lagrade procedurer kan användas för att tillhandahålla avancerad databasfunktionalitet, som att modifiera data i tabeller och kapsla in dessa ändringar i databastransaktioner.