Exécuter une procédure stockée
Cette rubrique explique comment exécuter une procédure stockée dans SQL Server 2012 à l'aide de SQL Server Management Studio ou 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. Sinon, la procédure peut être appelée et exécutée sans le mot clé si elle est la première instruction dans le traitement Transact-SQL.
Dans cette rubrique
Avant de commencer :
Limitations et restrictions
Recommandations
Sécurité
Pour exécuter une procédure stockée à l'aide de :
SQL Server Management Studio
Transact-SQL
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 des procédures système exacts, interrogez les vues 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. Toutefois, 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 :
Schéma sys de la base de données active.
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.
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 le 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. De cette façon, la table temporaire existe toujours dès que tempdb est recréée lors du démarrage de SQL Server.
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 afin 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 sa et ne pas posséder de paramètres d'entrée ou de sortie.
Utilisez sp_procoption pour :
désigner une procédure existante comme procédure de démarrage ;
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 Clause EXECUTE AS (Transact-SQL).
Autorisations
Pour plus d'informations, consultez la section « Autorisations » dans EXECUTE (Transact-SQL).
[Haut de la page]
Utilisation de SQL Server Management Studio
Pour exécuter une procédure stockée
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.
Développez la base de données que vous souhaitez, développez Programmabilité, puis développez Procédures stockées.
Cliquez avec le bouton droit sur la procédure stockée définie par l'utilisateur à supprimer et sélectionnez Exécuter la procédure stockée.
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.
Pour exécuter la procédure stockée, cliquez sur OK.
[Haut de la page]
Utilisation de Transact-SQL
Pour exécuter une procédure stockée
Connectez-vous au Moteur de base de données.
Dans la barre d'outils standard, cliquez sur Nouvelle requête.
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 procédure stockée uspGetEmployeeManagers avec la valeur 6spécifiée pour le paramètre @EmployeeID.
USE AdventureWorks2012;
GO
EXEC dbo.uspGetEmployeeManagers 6;
GO
Pour valider ou désactiver l'exécution automatique d'une procédure
Connectez-vous au Moteur de base de données.
Dans la barre d'outils standard, cliquez sur Nouvelle requête.
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 automatiquement d'une procédure
Connectez-vous au Moteur de base de données.
Dans la barre d'outils standard, cliquez sur Nouvelle requête.
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 automatiquement d'une procédure.
USE AdventureWorks2012;
GO
EXEC sp_procoption @ProcName = '<procedure name>'
, @OptionValue = 'off';
Exemple (Transact-SQL)
[Haut de la page]
Voir aussi
Référence
CREATE PROCEDURE (Transact-SQL)
Concepts
Configurer l'option de configuration du serveur scan for startup procs