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 approche, et aussi la plus courante, est qu'une application ou un utilisateur appelle la procédure. La deuxième méthode consiste à définir la procédure pour qu'elle s'exécute 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 établi 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 systématiquement la casse exacte des noms des procédures système dans vos appels de procédure. Par exemple, le code suivant ne fonctionnera pas s'il est exécuté dans le contexte d'une base de données dotée d'un classement qui respecte 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 affichages catalogue sys.system_objects et sys.system_parameters .

  • Si une procédure définie par l'utilisateur a le même nom qu'une procédure système, elle 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 figurent logiquement dans toutes les bases de données d'utilisateur et les bases de données définies par le système, elles peuvent être exécutés à partir de n'importe quelle base de données sans devoir qualifier entièrement le nom de la procédure. Cependant, nous vous conseillons de qualifier tous les noms de procédures système à l’aide du nom de schéma sys pour éviter les conflits de nom. L'exemple suivant illustre la méthode recommandée pour l'appel d'une procédure système.

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

    En exécutant une procédure définie par l'utilisateur, il est recommandé de qualifier le nom de la procédure avec le nom du schéma. Cette pratique améliore légèrement les performances car le Moteur de base de données n'a pas à rechercher dans plusieurs schémas. Elle évite également d'exécuter la procédure incorrecte si une base de données a des procédures de même nom dans plusieurs schémas.

    L'exemple suivant illustre la méthode recommandée pour l'exécution d'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 les paramètres.

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

    -Ou-

    EXEC AdventureWorks2012.dbo.uspGetEmployeeManagers 50;  
    GO  
    

    Si une procédure non qualifiée définie par l'utilisateur est spécifiée, le Moteur de base de données la recherche dans l'ordre suivant :

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

    2. Schéma par défaut de l'appelant s'il est exécuté dans un traitement ou en SQL dynamique, ou bien, si le nom non qualifié de la procédure apparaît dans le corps d'une autre définition de procédure, le schéma contenant cette autre procédure est recherché par la suite.

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

  • 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. Configurer des procédures pour qu'elles s'exécutent automatiquement peut être utile pour effectuer des opérations de maintenance de base de données ou pour exécuter les procédures en continu en tant que processus d'arrière-plan. Cette solution revêt également de l'importance dans le cas de procédures exécutant des tâches système ou de maintenance dans tempdb, par exemple la création d'une table temporaire globale. Cela permet de s’assurer qu’une telle table temporaire existera toujours lorsque tempdb est recréé pendant SQL Server démarrage.

    Une procédure exécutée automatiquement opère avec les mêmes droits que les membres du rôle de serveur sysadmin . Les messages d'erreur produits par une procédure sont enregistrés dans le journal des erreurs de SQL Server .

    Le nombre de procédures au démarrage est illimité, mais gardez à l'esprit que chacune utilise un thread de travail lors de son exécution. Si vous devez exécuter plusieurs procédures au démarrage mais si vous ne devez pas les exécuter de manière parallèle, utilisez comme procédure de démarrage une des procédures qui appellera les autres. Cette démarche permet de n'utiliser qu'un seul thread de travail.

    Conseil

    Une procédure en exécution automatique ne retourne pas de jeu de résultats. En effet, la procédure est exécutée par SQL Server et non par une application ou un utilisateur et il n'y a pas d'emplacement où envoyer le jeu de résultats.

  • Définition, désactivation et contrôle de l'exécution automatique

    Seul l’administrateur système (sa) peut marquer une procédure de sorte qu’elle s’exécute automatiquement. En outre, la procédure doit se trouver dans la base de données master , être la propriété de saet ne pas posséder de paramètres d'entrée ou de sortie.

    Utilisez sp_procoption pour :

    1. désigner une procédure existante comme procédure de démarrage ;

    2. supprimer l'exécution automatique d'une procédure au démarrage de SQL Server .

Sécurité

Pour plus d’informations, consultez EXECUTE AS (Transact-SQL) et EXECUTE AS Clause (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 que vous souhaitez, 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 à executer, puis cliquez sur Exécuter la procédure stockée.

  4. Dans la boîte de dialogue Exécuter la procédure , entrez une valeur pour chaque paramètre et indiquez si le paramètre 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 si le paramètre est un paramètre de sortie.

    Passer les valeurs de type NULL
    Permet le passage d'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 seul 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 valider ou désactiver 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 définir l’exécution automatique d’une procédure.

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

Pour arrêter 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 arrêter 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 scan for startup procs
EXECUTE (Transact-SQL)
CREATE PROCEDURE (Transact-SQL)
Procédures stockées (moteur de base de données)