En lagret prosedyre i SQL er en gruppe SQL-spørringer som kan lagres og gjenbrukes flere ganger. Det er veldig nyttig siden det reduserer behovet for å omskrive SQL-spørringer. Det forbedrer effektivitet, gjenbrukbarhet og sikkerhet i databaseadministrasjon.
Brukere kan også sende parametere til lagrede prosedyrer slik at den lagrede prosedyren kan reagere på de passerte parameterverdiene.
Lagrede prosedyrer er opprettet for å utføre en eller flere DML operasjoner på databasen. Det er ingenting annet enn en gruppe SQL-setninger som aksepterer noen input i form av parametere, utfører en oppgave, og kanskje returnerer en verdi.
Syntaks
To viktige syntakser for bruk av lagrede prosedyrer i SQL er:
Syntaks for å opprette en lagret prosedyre
OPPRETT PROSEDYRE prosedyrenavn
(parameter1 datatype, parameter2 datatype, …)
SOM
BEGYNNE
— SQL-setninger som skal utføres
SLUTT
Syntaks for å utføre den lagrede prosedyren
EXEC prosedyrenavn parameter1_verdi, parameter2_verdi, ..
Parameter
Den viktigste delen er parametrene. Parametere brukes til å sende verdier til prosedyren. Det finnes forskjellige typer parametere, som er som følger:
- BEGYNNE: Dette er det som kjøres direkte, eller vi kan si at det er en kjørbar del.
- SLUTT: Opp til dette vil koden bli utført.
Eksempel på lagret SQL-prosedyre
La oss se på et eksempel på lagret prosedyre i SQL for å forstå det bedre.
Se for deg en database som heter SampleDB, en tabell kalt Customers med noen eksempeldata og en lagret prosedyre kalt GetCustomersByCountry.
Den lagrede prosedyren tar parameteren Land og returnerer en liste over kunder fra Kunder-tabellen som samsvarer med det angitte landet. Til slutt utføres den lagrede prosedyren med parameteren Sri Lanka for å hente listen over kunder fra Sri Lanka.
Spørsmål:
-- 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';>
Merk: Du må sørge for at brukerkontoen har de nødvendige rettighetene for å opprette en database. Du kan prøve å logge på som en annen bruker med administrative rettigheter eller kontakte databaseadministratoren for å gi de nødvendige rettighetene til brukerkontoen din. Hvis du bruker en skybasert databasetjeneste, sørg for at du har konfigurert brukerkontoen og dens tillatelser riktig.
Produksjon:
| Kundenavn | kontakt navn |
|---|---|
| Naveen | Tulasi |
Viktige punkter om lagrede SQL-prosedyrer
- En lagret prosedyre er en forberedt SQL-kode som du kan lagre, slik at koden kan gjenbrukes om og om igjen.
- Lagrede prosedyrer gjør at kode som brukes gjentatte ganger kan lagres i databasen og kjøres derfra, i stedet for fra klienten. Dette gir en mer modulær tilnærming til databasedesign.
- Siden lagrede prosedyrer er kompilert og lagret i databasen, er de svært effektive. SQL Server kompilerer hver lagret prosedyre én gang og bruker deretter utførelsesplanen på nytt. Dette fører til enorme ytelsesøkninger når lagrede prosedyrer kalles gjentatte ganger.
- Lagrede prosedyrer gir bedre sikkerhet til dataene dine. Brukere kan utføre en lagret prosedyre uten å måtte utføre noen av setningene direkte. Derfor kan en bruker få tillatelse til å utføre en lagret prosedyre uten å ha noen tillatelser på de underliggende tabellene.
- Lagrede prosedyrer kan redusere nettverkstrafikk og ventetid, og øke applikasjonsytelsen. Et enkelt kall til en lagret prosedyre kan utføre mange setninger.
- Lagrede prosedyrer har bedre støtte for feilhåndtering.
- Lagrede prosedyrer kan brukes til å tilby avanserte databasefunksjoner, for eksempel å endre data i tabeller og innkapsle disse endringene i databasetransaksjoner.