Une procédure stockée est un groupe d'instructions SQL compilées en une seule. Les procédures stockées peuvent inclure une logique métier et d'autres constructions de programmation.
Dans SQL Server, une procédure stockée est un groupe d'une ou plusieurs instructions Transact-SQL ou une référence à une méthode CLR (Common Runtime Language) Microsoft .NET Framework.
Programmabilité
Une procédure stockée est plus qu'un long script. C'est un script qui a été enregistré dans SQL Server spécifiquement sous les procédures stockées nœud, et il peut :
- Accepter les paramètres d'entrée (et renvoyer plusieurs valeurs sous la forme de paramètres de sortie au programme appelant).
- Contient des instructions de programmation.
- Renvoyer une valeur de statut à un programme appelant pour indiquer le succès ou l'échec, et la raison de tout échec.
Les procédures stockées contiennent souvent une logique métier. Par exemple, une procédure stockée peut accepter des paramètres qui lui sont transmis et tester ces paramètres à l'aide de IF
déclarations. Par exemple, si le paramètre est une valeur, faites ceci, si c'est une autre valeur, faites cela.
Les procédures stockées peuvent améliorer les performances d'une application, car la procédure stockée est analysée et optimisée dès sa création, puis stockée en mémoire. L'exécution d'une requête conditionnelle via une procédure stockée peut être extrêmement rapide - par rapport à une application qui envoie une requête sur le réseau, au serveur SQL, puis reçoit toutes les données qui lui sont renvoyées sur le réseau afin qu'elle puisse les filtrer et sélectionner uniquement les enregistrements qui l'intéressent.
Avantages des procédures stockées
Voici quelques-uns des principaux avantages de l'utilisation des procédures stockées :
Avantage | Explication |
---|---|
Programmation modulaire | Vous pouvez écrire une procédure stockée une fois, puis l'appeler encore et encore, à partir de différentes parties d'une application (et même à partir de plusieurs applications). |
Performances | Les procédures stockées accélèrent l'exécution du code et réduisent le trafic réseau.
|
Sécurité | Les utilisateurs peuvent exécuter une procédure stockée sans avoir besoin d'exécuter directement l'une des instructions. Par conséquent, une procédure stockée peut fournir une fonctionnalité de base de données avancée pour les utilisateurs qui n'auraient normalement pas accès à ces tâches, mais cette fonctionnalité est mise à disposition de manière étroitement contrôlée. |
Comment créer une procédure stockée
Pour créer une procédure stockée, utilisez le CREATE PROCEDURE
instruction, suivie du code qui constitue la procédure stockée. Si votre procédure stockée accepte des paramètres, ils doivent être inclus après le nom.
CREATE PROCEDURE myStoredProcedure AS ... OR CREATE PROCEDURE myStoredProcedure @ParameterName DataType AS ...
Exemple
Voici un exemple de création d'une procédure stockée puis d'exécution de cette procédure stockée.
-
Créer la procédure stockée
Exécutez l'instruction suivante sur la base de données musicale que nous avons créée tout au long de ce didacticiel.
Cet exemple crée une procédure stockée appelée AlbumsFromArtist. Il sélectionne tous les albums d'un artiste spécifié lors de l'exécution de la procédure stockée.
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
-
Afficher la procédure stockée
Développez Programmabilité> Procédures stockées nœud sous la base de données applicable pour voir votre procédure stockée nouvellement créée. Vous pouvez également développer les Paramètres de la procédure stockée node pour voir les paramètres que vous devez transmettre lorsque vous l'exécutez.
-
Exécuter la procédure stockée
Maintenant que la procédure stockée a été créée, vous pouvez l'exécuter en utilisant un
EXECUTE
déclaration et en passant tous les paramètres requis.Dans notre exemple, nous devons passer le nom de l'artiste.
EXECUTE spAlbumsFromArtist @ArtistName = "Devin Townsend";
Vous pouvez également omettre le nom du paramètre lors de la transmission des paramètres. Comme ceci :
EXECUTE spAlbumsFromArtist "Devin Townsend";
Modifier une procédure stockée
Vous pouvez modifier votre procédure stockée avec le ALTER PROCEDURE
déclaration. Tout comme lorsque vous modifiez une vue, vous pouvez modifier une procédure stockée en appliquant simplement la nouvelle définition de procédure stockée.
-
Modifier la procédure stockée
Exécutez l'instruction suivante. Cela ajoute une nouvelle colonne aux résultats renvoyés par la procédure stockée. Nous ajoutons également des alias aux noms de colonnes.
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
-
Exécuter la procédure stockée
Maintenant que nous avons ajouté le
Genre
colonne à la vue, la procédure stockée renvoie maintenant cette colonne lorsque nous l'exécutons.EXECUTE spAlbumsFromArtist @ArtistName = "Devin Townsend";