logo

Procedure memorizzate SQL

Una procedura memorizzata in SQL è un gruppo di query SQL che può essere salvato e riutilizzato più volte. È molto utile in quanto riduce la necessità di riscrivere le query SQL. Migliora l'efficienza, la riusabilità e la sicurezza nella gestione dei database.

Gli utenti possono anche passare parametri alle procedure memorizzate in modo che la procedura memorizzata possa agire sui valori dei parametri passati.

Le procedure memorizzate vengono create per eseguirne una o più DML operazioni sul Database. Non è altro che un gruppo di Istruzioni SQL che accetta alcuni input sotto forma di parametri, esegue alcune attività e può restituire o meno un valore.



Sintassi

Due sintassi importanti per l'utilizzo delle procedure memorizzate in SQL sono:

Sintassi per creare una procedura memorizzata

CREA PROCEDURA nome_procedura
(tipo_dati parametro1, tipo_dati parametro2, …)
COME
INIZIO
— Istruzioni SQL da eseguire
FINE

Sintassi per eseguire la procedura memorizzata

EXEC nome_procedura valore_parametro1, valore_parametro2, ..

Parametro

La parte più importante sono i parametri. I parametri vengono utilizzati per passare valori alla procedura. Esistono diversi tipi di parametri, che sono i seguenti:

  1. INIZIO: Questo è ciò che viene eseguito direttamente o possiamo dire che è una parte eseguibile.
  2. FINE: Fino a questo momento, il codice verrà eseguito.

Esempio di procedura memorizzata SQL

Diamo un'occhiata a un esempio di Stored Procedure in SQL per capirlo meglio.

Immagina un database denominato SampleDB, una tabella denominata Customers con alcuni dati di esempio e una procedura memorizzata denominata GetCustomersByCountry.

La procedura memorizzata accetta il parametro Country e restituisce un elenco di clienti dalla tabella Customers che corrisponde al paese specificato. Infine, viene eseguita la procedura memorizzata con il parametro Sri Lanka per recuperare l'elenco dei clienti dello Sri Lanka.

Domanda:

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

Nota: Dovrai assicurarti che l'account utente disponga dei privilegi necessari per creare un database. Puoi provare ad accedere come utente diverso con privilegi amministrativi o contattare l'amministratore del database per concedere i privilegi necessari al tuo account utente. Se utilizzi un servizio di database basato su cloud, assicurati di aver configurato correttamente l'account utente e le sue autorizzazioni.

Produzione:

Nome del cliente Nome del contatto
Naveen Tulasi

Punti importanti sulle procedure memorizzate SQL

  • Una procedura memorizzata è un codice SQL preparato che è possibile salvare, in modo che il codice possa essere riutilizzato più e più volte.
  • Le procedure memorizzate consentono di salvare il codice utilizzato ripetutamente nel database ed eseguirlo da tale posizione anziché dal client. Ciò fornisce un approccio più modulare alla progettazione del database.
  • Poiché le procedure memorizzate vengono compilate e archiviate nel database, sono altamente efficienti. SQL Server compila ogni procedura memorizzata una volta e quindi riutilizza il piano di esecuzione. Ciò porta a enormi miglioramenti delle prestazioni quando le procedure memorizzate vengono chiamate ripetutamente.
  • Le procedure memorizzate forniscono una migliore sicurezza ai tuoi dati. Gli utenti possono eseguire una procedura memorizzata senza dover eseguire direttamente alcuna istruzione. Pertanto, a un utente può essere concessa l'autorizzazione per eseguire una procedura memorizzata senza disporre di alcuna autorizzazione sulle tabelle sottostanti.
  • Le procedure archiviate possono ridurre il traffico di rete e la latenza, migliorando le prestazioni delle applicazioni. Una singola chiamata a una procedura memorizzata può eseguire molte istruzioni.
  • Le procedure memorizzate offrono un supporto migliore per la gestione degli errori.
  • Le procedure memorizzate possono essere utilizzate per fornire funzionalità di database avanzate, come la modifica dei dati nelle tabelle e l'incapsulamento di tali modifiche nelle transazioni del database.