Partager via


Exécuter une procédure stockée

Cette rubrique explique comment exécuter une procédure stockée dans SQL Server 2014 à l’aide de SQL Server Management Studio ou de Transact-SQL.

Il existe deux façons différentes d’exécuter une procédure stockée. La première et la plus courante approche consiste pour une application ou un utilisateur à appeler la procédure. La deuxième approche consiste à définir la procédure à exécuter automatiquement lorsqu’une instance de SQL Server démarre. Lorsqu’une procédure est appelée par une application ou un utilisateur, le mot clé Transact-SQL EXECUTE ou EXEC est explicitement indiqué dans l’appel. Vous pouvez également appeler et exécuter la procédure sans le mot clé si la procédure est la première instruction du lot Transact-SQL.

Dans cette rubrique

Avant de commencer

Limitations et restrictions

  • Le classement de la base de données d’appel est utilisé pour mettre en correspondance les noms des procédures système. Par conséquent, utilisez toujours le cas exact des noms de procédures système dans les appels de procédure. Par exemple, ce code échouera s’il est exécuté dans le contexte d’une base de données qui a une collation sensible à la casse.

    EXEC SP_heLP; -- Will fail to resolve because SP_heLP does not equal sp_help  
    

    Pour afficher les noms exacts des procédures système, interrogez les vues de catalogue sys.system_objects et sys.system_parameters.

  • Si une procédure définie par l’utilisateur porte le même nom qu’une procédure système, la procédure définie par l’utilisateur peut ne jamais s’exécuter.

Recommandations

  • Exécution de procédures stockées système

    Les procédures système commencent par le préfixe sp_. Étant donné qu’elles apparaissent logiquement dans toutes les bases de données définies par l’utilisateur et le système, elles peuvent être exécutées à partir de n’importe quelle base de données sans avoir à avoir à entièrement qualité le nom de la procédure. Toutefois, nous vous recommandons de qualifier tous les noms de procédures système avec le schéma sys afin de prévenir les conflits de nom. L’exemple suivant illustre la méthode recommandée d’appel d’une procédure système.

    EXEC sys.sp_who;  
    
  • Exécution de procédures stockées définies par l’utilisateur

    Lors de l’exécution d’une procédure définie par l’utilisateur, nous vous recommandons de qualifier le nom de la procédure avec le nom du schéma. Cette pratique offre une petite amélioration des performances, car le moteur de base de données n’a pas besoin de rechercher plusieurs schémas. Elle empêche également l’exécution de la procédure incorrecte si une base de données a des procédures portant le même nom dans plusieurs schémas.

    L’exemple suivant illustre la méthode recommandée pour exécuter une procédure définie par l’utilisateur. Notez que la procédure accepte un paramètre d’entrée. Pour plus d’informations sur la spécification des paramètres d’entrée et de sortie, consultez Spécifier des paramètres.

    USE AdventureWorks2012;  
    GO  
    EXEC dbo.uspGetEmployeeManagers @BusinessEntityID = 50;  
    

    -Ou-

    EXEC AdventureWorks2012.dbo.uspGetEmployeeManagers 50;  
    GO  
    

    Si une procédure définie par l'utilisateur n'est pas qualifiée, le moteur de base de données recherche cette procédure dans l'ordre suivant :

    1. Schéma sys de la base de données active.

    2. Le schéma par défaut de l’appelant lorsqu’il est exécuté dans un lot ou dans SQL dynamique. Ou, si le nom de procédure non qualifié apparaît dans le corps d’une autre définition de procédure, le schéma qui contient cette autre procédure est recherché ensuite.

    3. Schéma dbo dans la base de données actuelle.

  • Exécution automatique des procédures stockées

    Les procédures marquées pour l’exécution automatique sont exécutées chaque fois que SQL Server démarre et que la base de données master est récupérée pendant ce processus de démarrage. La configuration des procédures à exécuter automatiquement peut être utile pour effectuer des opérations de maintenance de base de données ou pour avoir des procédures exécutées en continu en tant que processus en arrière-plan. Une autre utilisation pour l’exécution automatique consiste à faire en sorte que la procédure effectue des tâches système ou de maintenance dans tempdb, telles que la création d’une table temporaire globale. Cela permet de s’assurer qu’une telle table temporaire existe toujours lorsque tempdb est recréé au démarrage de SQL Server.

    Une procédure exécutée automatiquement fonctionne avec les mêmes autorisations que les membres du rôle serveur fixe sysadmin . Tous les messages d’erreur générés par la procédure sont écrits dans le journal des erreurs SQL Server.

    Il n’existe aucune limite au nombre de procédures de démarrage que vous pouvez avoir, mais sachez que chacun consomme un thread de travail lors de l’exécution. Si vous devez exécuter plusieurs procédures au démarrage, mais n’avez pas besoin de les exécuter en parallèle, effectuez une procédure la procédure de démarrage et utilisez cette procédure pour appeler les autres procédures. Cela utilise un seul thread de travail.

    Conseil / Astuce

    Ne retournez aucun jeu de résultats à partir d’une procédure exécutée automatiquement. Étant donné que la procédure est exécutée par SQL Server au lieu d’une application ou d’un utilisateur, il n’y a nulle part où les jeux de résultats doivent être exécutés.

  • Configuration, effacement et contrôle de l’exécution automatique

    Seul l’administrateur système (sa) peut marquer une procédure à exécuter automatiquement. En outre, la procédure doit se trouver dans la base de données master , détenue par sa, et ne peut pas avoir de paramètres d’entrée ou de sortie.

    Utilisez sp_procoption pour :

    1. Désignez une procédure existante comme procédure de démarrage.

    2. Arrêtez l’exécution d’une procédure au démarrage de SQL Server.

Sécurité

Pour plus d’informations, consultez EXECUTE AS (Transact-SQL) et la clause EXECUTE AS (Transact-SQL).

Autorisations

Pour plus d’informations, consultez la section « Autorisations » dans EXECUTE (Transact-SQL).

Utilisation de SQL Server Management Studio

Pour exécuter une procédure stockée

  1. Dans l’Explorateur d’objets, connectez-vous à une instance du moteur de base de données SQL Server, développez cette instance, puis développez bases de données.

  2. Développez la base de données souhaitée, développez Programmabilité, puis développez Procédures stockées.

  3. Cliquez avec le bouton droit sur la procédure stockée définie par l’utilisateur, puis cliquez sur Exécuter la procédure stockée.

  4. Dans la boîte de dialogue Exécuter la procédure , spécifiez une valeur pour chaque paramètre et indiquez s’il doit passer une valeur Null.

    Paramètre
    Indique le nom du paramètre.

    Type de données
    Indique le type de données du paramètre.

    Paramètre de sortie
    Indique s’il s’agit d’un paramètre de sortie.

    Passer la valeur Null
    Transmettez une valeur NULL en tant que valeur du paramètre.

    Valeur
    Tapez la valeur du paramètre lors de l’appel de la procédure.

  5. Pour exécuter la procédure stockée, cliquez sur OK.

Utilisation de Transact-SQL

Pour exécuter une procédure stockée

  1. Connectez-vous au moteur de base de données.

  2. Dans la barre d'outils standard, cliquez sur Nouvelle requête.

  3. Copiez et collez l'exemple suivant dans la fenêtre de requête, puis cliquez sur Exécuter. Cet exemple montre comment exécuter une procédure stockée qui attend un paramètre. L’exemple exécute la uspGetEmployeeManagers procédure stockée avec la valeur 6 spécifiée comme @EmployeeID paramètre.

USE AdventureWorks2012;  
GO  
EXEC dbo.uspGetEmployeeManagers 6;  
GO  

Pour définir ou effacer une procédure pour l’exécution automatique

  1. Connectez-vous au moteur de base de données.

  2. Dans la barre d'outils standard, cliquez sur Nouvelle requête.

  3. Copiez et collez l'exemple suivant dans la fenêtre de requête, puis cliquez sur Exécuter. Cet exemple montre comment utiliser sp_procoption pour définir une procédure pour l’exécution automatique.

USE AdventureWorks2012;  
GO  
EXEC sp_procoption @ProcName = '<procedure name>'   
    , @OptionName = ] 'startup'   
    , @OptionValue = 'on';  

Pour empêcher l’exécution automatique d’une procédure

  1. Connectez-vous au moteur de base de données.

  2. Dans la barre d'outils standard, cliquez sur Nouvelle requête.

  3. Copiez et collez l'exemple suivant dans la fenêtre de requête, puis cliquez sur Exécuter. Cet exemple montre comment utiliser sp_procoption pour empêcher l’exécution automatique d’une procédure.

USE AdventureWorks2012;  
GO  
EXEC sp_procoption @ProcName = '<procedure name>'   
    , @OptionValue = 'off';  

Exemple (Transact-SQL)

Voir aussi

Spécifier des paramètres
Configurer l'option de configuration du serveur pour le scan des processus de démarrage
EXECUTE (Transact-SQL)
CRÉER PROCÉDURE (Transact-SQL)
Procédures stockées (moteur de base de données)