Créer une procédure stockée
S’applique à : SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Cet article décrit comment créer une procédure stockée SQL Server à l'aide de SQL Server Management Studio et de l'instruction Transact-SQL CREATE PROCEDURE.
autorisations
Nécessite l'autorisation CREATE PROCEDURE dans la base de données et l'autorisation ALTER sur le schéma dans lequel la procédure est créée.
Créer une procédure stockée
Vous pouvez utiliser l'interface utilisateur SQL Server Management Studio (SSMS) ou Transact-SQL dans une fenêtre Requête SSMS pour créer une procédure stockée. Utilisez toujours la dernière version de SSMS.
Remarque
L'exemple de procédure stockée de cet article utilise l'exemple AdventureWorksLT2022
de base de données (SQL Server) ou AdventureWorksLT
(base de données Azure SQL). Pour obtenir des instructions sur l'obtention et l'utilisation d'exemple AdventureWorksLT
de bases de données, consultez exemple AdventureWorks de bases de données.
Utiliser SQL Server Management Studio
Pour créer une procédure stockée dans SSMS :
Dans l'Explorateur d'objets, connectez-vous à une instance de SQL Server ou de base de données Azure SQL.
Pour plus d'informations, consultez les guides de démarrage rapide suivants :
Développez l'instance, puis développez les bases de données.
Développez la base de données que vous souhaitez, puis développez Programmabilité.
Cliquez avec le bouton droit sur les Procédures stockées, puis sélectionnez Nouvelle procédure stockée>. Une nouvelle fenêtre Requête s'ouvre avec un modèle pour la procédure stockée.
Le modèle de procédure stockée par défaut a deux paramètres. Si votre procédure stockée a moins, plus ou pas de paramètres, ajoutez ou supprimez des lignes de paramètres dans le modèle selon les besoins.
Dans le menu Requête , sélectionnez Spécifier les valeurs des paramètres du modèle.
Dans la zone de dialogue Spécifier des valeurs pour les paramètres du modèle, fournissez les informations suivantes pour les champs Valeur :
- Auteur : remplacez
Name
par votre nom. - Créer une date : saisissez la date d'aujourd'hui.
- Description : décrivez brièvement la procédure.
- Procedure_Name : remplacez
ProcedureName
par le nouveau nom de procédure stockée. - @Param1 : remplacez
@p1
par le nom de votre premier paramètre, par exemple @ColumnName1. - @Datatype_For_Param1 : le cas échéant, remplacez
int
par le type de données de votre premier paramètre, tel que nvarchar(50). - Default_Value_For_Param1 : le cas échéant, remplacez
0
par la valeur par défaut de votre premier paramètre, ou NULL. - @Param2 : remplacez
@p2
par le nom de votre deuxième paramètre, par exemple @ColumnName2. - @Datatype_For_Param2 : le cas échéant, remplacez
int
par le type de données de votre deuxième paramètre, tel que nvarchar(50). - Default_Value_For_Param2 : le cas échéant, remplacez
0
par la valeur par défaut de votre deuxième paramètre, ou NULL.
La capture d'écran suivante montre la zone de dialogue complétée pour l'exemple de procédure stockée :
- Auteur : remplacez
Cliquez sur OK.
Dans l'Éditeur de requête, remplacez l'instruction SELECT par la requête de votre procédure.
Le code suivant montre l'instruction CREATE PROCEDURE terminée pour l'exemple de procédure stockée :
-- ======================================================= -- Create Stored Procedure Template for Azure SQL Database -- ======================================================= SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: My Name -- Create Date: 01/23/2024 -- Description: Returns the customer's company name. -- ============================================= CREATE PROCEDURE SalesLT.uspGetCustomerCompany ( -- Add the parameters for the stored procedure here @LastName nvarchar(50) = NULL, @FirstName nvarchar(50) = NULL ) AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON -- Insert statements for procedure here SELECT FirstName, LastName, CompanyName FROM SalesLT.Customer WHERE FirstName = @FirstName AND LastName = @LastName; END GO
Pour tester la syntaxe, dans le menu Requête, sélectionnez Analyser. Corrigez les éventuelles erreurs.
sélectionnez Exécuter dans la barre d'outils. La procédure est créée en tant qu'objet dans la base de données.
Pour afficher la nouvelle procédure dans l'Explorateur d'objets, cliquez avec le bouton droit sur Procédures stockées et sélectionnez Actualiser.
Pour exécuter la procédure :
Dans l'Explorateur d'objets, cliquez avec le bouton droit sur le nom de la procédure stockée et sélectionnez Exécuter la procédure stockée.
Dans la fenêtre Exécuter la procédure, saisissez des valeurs pour tous les paramètres, puis sélectionnez OK. Pour obtenir des instructions détaillées, consultez Exécuter une procédure stockée.
Par exemple, pour exécuter l'exemple
SalesLT.uspGetCustomerCompany
de procédure, saisissez Cannon pour le paramètre @LastName et Chris pour le paramètre @FirstName, puis sélectionnez OK. La procédure stockée s’exécute et retourneFirstName
Chris,LastName
Cannon etCompanyName
Équipement sportif extérieur.
Important
Validez toutes les entrées utilisateur. Ne concaténez pas les entrées utilisateur avant de les avoir validées. N'exécutez jamais une commande élaborée à partir d'une entrée utilisateur non validée.
Utiliser Transact-SQL
Pour créer une procédure dans l'Éditeur de requête SSMS :
Dans SSMS, connectez-vous à une instance de SQL Server ou de base de données Azure SQL.
Sélectionnez Nouvelle requête dans la barre d'outils.
Saisissez le code suivant dans la fenêtre Requête, en remplaçant
<ProcedureName>
, les noms et les types de données de tous les paramètres et l'instruction SELECT par vos propres valeurs.CREATE PROCEDURE <ProcedureName> @<ParameterName1> <data type>, @<ParameterName2> <data type> AS SET NOCOUNT ON; SELECT <your SELECT statement>; GO
Par exemple, l'instruction suivante crée la même procédure stockée dans la base de données
AdventureWorksLT
que celle de l'exemple précédent, avec un nom de procédure légèrement différent.CREATE PROCEDURE SalesLT.uspGetCustomerCompany1 @LastName nvarchar(50), @FirstName nvarchar(50) AS SET NOCOUNT ON; SELECT FirstName, LastName, CompanyName FROM SalesLT.Customer WHERE FirstName = @FirstName AND LastName = @LastName; GO
Sélectionnez Exécuter dans la barre d'outils pour exécuter la requête. La procédure stockée est créée.
Pour exécuter la procédure stockée, saisissez une instruction EXECUTE dans une nouvelle fenêtre Requête, en fournissant des valeurs pour tous les paramètres, puis sélectionnez Exécuter. Pour obtenir des instructions détaillées, consultez Exécuter une procédure stockée.