Una stored procedure è un gruppo di istruzioni SQL compilate in una. Le stored procedure possono includere business logic e altri costrutti di programmazione.
In SQL Server, una stored procedure è un gruppo di una o più istruzioni Transact-SQL o un riferimento a un metodo CLR (Common Runtime Language) di Microsoft .NET Framework.
Programmabilità
Una stored procedure è più di un semplice script lungo. È uno script che è stato salvato in SQL Server in particolare nelle Stored Procedure nodo e può:
- Accetta i parametri di input (e restituisce più valori sotto forma di parametri di output al programma chiamante).
- Contengono istruzioni di programmazione.
- Restituisce un valore di stato a un programma chiamante per indicare l'esito positivo o negativo e il motivo di qualsiasi errore.
Le stored procedure spesso contengono logica aziendale. Ad esempio, una procedura memorizzata può accettare i parametri che le vengono passati e confrontarli con questi parametri usando IF
dichiarazioni. Ad esempio, se il parametro è un valore, fallo, se è un altro valore, fallo.
Le stored procedure possono migliorare le prestazioni in un'applicazione, poiché la stored procedure viene analizzata e ottimizzata non appena viene creata e quindi archiviata in memoria. L'esecuzione di una query condizionale tramite stored procedure può essere estremamente rapida, rispetto a un'applicazione che invia una query attraverso la rete, a SQL Server, quindi riceve tutti i dati restituiti attraverso la rete in modo che possa filtrarla e selezionarla solo i record a cui è interessato.
Vantaggi delle stored procedure
Di seguito sono riportati alcuni dei principali vantaggi nell'utilizzo delle stored procedure:
Vantaggio | Spiegazione |
---|---|
Programmazione modulare | Puoi scrivere una stored procedure una volta, quindi richiamarla ancora e ancora, da parti diverse di un'applicazione (e anche da più applicazioni). |
Prestazioni | Le stored procedure forniscono un'esecuzione più rapida del codice e riducono il traffico di rete.
|
Sicurezza | Gli utenti possono eseguire una procedura memorizzata senza dover eseguire direttamente nessuna delle istruzioni. Pertanto, una procedura memorizzata può fornire funzionalità di database avanzate per utenti che normalmente non avrebbero accesso a queste attività, ma questa funzionalità è resa disponibile in modo strettamente controllato. |
Come creare una stored procedure
Per creare una procedura memorizzata, utilizzare CREATE PROCEDURE
istruzione, seguita dal codice che costituisce la stored procedure. Se la tua procedura memorizzata accetterà parametri, devono essere inclusi dopo il nome.
CREATE PROCEDURE myStoredProcedure AS ... OR CREATE PROCEDURE myStoredProcedure @ParameterName DataType AS ...
Esempio
Ecco un esempio di creazione di una stored procedure e quindi di esecuzione di tale stored procedure.
-
Crea la stored procedure
Esegui la seguente istruzione sul database Music che abbiamo creato durante questo tutorial.
Questo esempio crea una stored procedure denominata AlbumsFromArtist. Seleziona tutti gli album di un artista specificato durante l'esecuzione della procedura memorizzata.
CREATE PROCEDURE spAlbumsFromArtist @ArtistName varchar(255) AS SELECT AlbumName, ReleaseDate FROM Albums INNER JOIN Artists ON Albums.ArtistId = Artists.ArtistId WHERE Artists.ArtistName = @ArtistName; GO
-
Visualizza la procedura archiviata
Espandi Programmabilità> Stored procedure nodo nel database applicabile per visualizzare la procedura memorizzata appena creata. È inoltre possibile espandere i Parametri della stored procedure node per vedere i parametri che devi passare quando lo esegui.
-
Esegui la procedura archiviata
Ora che la stored procedure è stata creata, puoi eseguirla utilizzando un
EXECUTE
istruzione e passando tutti i parametri richiesti.Nel nostro esempio, dobbiamo passare il nome dell'artista.
EXECUTE spAlbumsFromArtist @ArtistName = "Devin Townsend";
In alternativa, puoi omettere il nome del parametro quando passi i parametri. In questo modo:
EXECUTE spAlbumsFromArtist "Devin Townsend";
Modificare una procedura memorizzata
Puoi modificare la tua procedura memorizzata con ALTER PROCEDURE
dichiarazione. Proprio come quando si modifica una vista, è possibile modificare una procedura memorizzata semplicemente applicando la nuova definizione della procedura memorizzata.
-
Modificare la procedura memorizzata
Esegui la seguente istruzione. Ciò aggiunge una nuova colonna ai risultati restituiti dalla stored procedure. Aggiungiamo anche alias ai nomi delle colonne.
ALTER PROCEDURE spAlbumsFromArtist @ArtistName varchar(255) AS SELECT al.AlbumName, al.ReleaseDate, g.Genre FROM Albums al INNER JOIN Artists ar ON al.ArtistId = ar.ArtistId INNER JOIN Genres g ON g.GenreId = al.GenreId WHERE ar.ArtistName = @ArtistName; GO
-
Esegui la procedura archiviata
Ora che abbiamo aggiunto il
Genre
colonna alla vista, la procedura memorizzata ora restituisce quella colonna quando la eseguiamo.EXECUTE spAlbumsFromArtist @ArtistName = "Devin Townsend";