logo

SQL-lagrede procedurer

En lagret procedure i SQL er en gruppe af SQL-forespørgsler, der kan gemmes og genbruges flere gange. Det er meget nyttigt, da det reducerer behovet for omskrivning af SQL-forespørgsler. Det forbedrer effektiviteten, genanvendeligheden og sikkerheden i databasestyring.

Brugere kan også videregive parametre til lagrede procedurer, så den lagrede procedure kan reagere på de beståede parameterværdier.

Lagrede procedurer oprettes for at udføre en eller flere DML operationer på databasen. Det er intet andet end en gruppe af SQL-sætninger der accepterer noget input i form af parametre, udfører en opgave og måske returnerer en værdi.



Syntaks

To vigtige syntakser til brug af lagrede procedurer i SQL er:

Syntaks til at oprette en lagret procedure

OPRET PROCEDURE procedurenavn
(parameter1 datatype, parameter2 datatype, …)
SOM
BEGYNDE
— SQL-sætninger, der skal udføres
ENDE

Syntaks til at udføre den lagrede procedure

EXEC procedurenavn parameter1_værdi, parameter2_værdi, ..

Parameter

Den vigtigste del er parametrene. Parametre bruges til at overføre værdier til proceduren. Der er forskellige typer parametre, som er som følger:

  1. BEGYNDE: Dette er det, der udføres direkte, eller vi kan sige, at det er en eksekverbar del.
  2. ENDE: Indtil dette vil koden blive eksekveret.

Eksempel på SQL Stored Procedure

Lad os se på et eksempel på Stored Procedure i SQL for at forstå det bedre.

Forestil dig en database ved navn SampleDB, en tabel med navnet Kunder med nogle eksempeldata og en lagret procedure ved navn GetCustomersByCountry.

Den lagrede procedure tager parameteren Land og returnerer en liste over kunder fra tabellen Kunder, der matcher det angivne land. Til sidst udføres den lagrede procedure med parameteren Sri Lanka for at hente listen over kunder fra Sri Lanka.

Forespørgsel:

-- 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';>

Bemærk: Du skal sikre dig, at brugerkontoen har de nødvendige rettigheder til at oprette en database. Du kan prøve at logge ind som en anden bruger med administrative rettigheder eller kontakte databaseadministratoren for at tildele de nødvendige rettigheder til din brugerkonto. Hvis du bruger en cloud-baseret databasetjeneste, skal du sørge for, at du har konfigureret brugerkontoen og dens tilladelser korrekt.

Produktion:

Kundenavn Kontakt navn
Naveen Tulasi

Vigtige punkter om SQL Stored Procedures

  • En lagret procedure er en forberedt SQL-kode, som du kan gemme, så koden kan genbruges igen og igen.
  • Lagrede procedurer giver mulighed for, at kode, der bruges gentagne gange, kan gemmes i databasen og køres derfra i stedet for fra klienten. Dette giver en mere modulær tilgang til databasedesign.
  • Da lagrede procedurer kompileres og gemmes i databasen, er de yderst effektive. SQL Server kompilerer hver lagret procedure én gang og genbruger derefter eksekveringsplanen. Dette fører til enorme præstationsforøgelser, når lagrede procedurer kaldes gentagne gange.
  • Lagrede procedurer giver bedre sikkerhed til dine data. Brugere kan udføre en lagret procedure uden at skulle udføre nogen af ​​sætningerne direkte. Derfor kan en bruger få tilladelse til at udføre en lagret procedure uden at have nogen tilladelser på de underliggende tabeller.
  • Lagrede procedurer kan reducere netværkstrafik og ventetid, hvilket øger applikationens ydeevne. Et enkelt kald til en lagret procedure kan udføre mange sætninger.
  • Lagrede procedurer har bedre understøttelse af fejlhåndtering.
  • Lagrede procedurer kan bruges til at levere avanceret databasefunktionalitet, såsom ændring af data i tabeller og indkapsling af disse ændringer i databasetransaktioner.