Créer une procédure stockée

S'applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics 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 :

  1. 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 :

  2. Développez l'instance, puis développez les bases de données.

  3. Développez la base de données que vous souhaitez, puis développez Programmabilité.

  4. 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.

  5. Dans le menu Requête , sélectionnez Spécifier les valeurs des paramètres du modèle.

  6. 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 :

    Screenshot that shows a completed Specify Values for Template Parameters dialog box.

  7. Cliquez sur OK.

  8. 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
    
  9. Pour tester la syntaxe, dans le menu Requête, sélectionnez Analyser. Corrigez les éventuelles erreurs.

  10. 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.

  11. 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 :

  1. 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.

  2. 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 retourne FirstNameChris, LastNameCannon et CompanyNameÉ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 :

  1. Dans SSMS, connectez-vous à une instance de SQL Server ou de base de données Azure SQL.

  2. Sélectionnez Nouvelle requête dans la barre d'outils.

  3. 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
    
  4. Sélectionnez Exécuter dans la barre d'outils pour exécuter la requête. La procédure stockée est créée.

  5. 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.