Appeler des procédures stockées

Effectué

Les procédures stockées peuvent être appelées par une application, par un utilisateur, ou au démarrage de SQL Server.

Exécuter une procédure stockée par un utilisateur

Lorsqu'une application ou un utilisateur exécute une procédure stockée, la commande EXECUTE ou son raccourci, EXEC, est utilisée, suivie du nom en deux parties de la procédure. Par exemple :

EXEC dbo.uspGetEmployeeManagers

Les procédures stockées du système sont également appelées à l'aide du mot clé EXECUTE ou EXEC. Le classement de la base de données d'appel est utilisé pour mettre en correspondance les noms des procédures système. Si le classement de la base de données est sensible à la casse, vous devez exécuter la procédure stockée en respectant la casse du nom de la procédure.

Si la procédure stockée est la première instruction du lot T-SQL, la procédure peut être exécutée sans le mot clé EXECUTE ou EXEC.

Pour connaître les noms exacts des procédures système, utilisez les vues du catalogue :

sys.system_objects

sys.system_parameters

Les procédures système stockées sont préfixées par sp_. Les procédures système stockées ne sont pas créées par les utilisateurs, mais font partie de l’ensemble des bases de données définies par l'utilisateur et par le système. Elles n'ont pas besoin d'un nom complet pour être exécutées, mais il est préférable d'inclure le nom du schéma sys. Par exemple :

EXEC sys.sp_who;

Exécuter automatiquement une procédure stockée

Vous pouvez exécuter une procédure stockée chaque fois que SQL Server démarre. Vous pouvez effectuer des opérations de maintenance de la base de données ou exécuter une procédure en arrière-plan. Les procédures stockées qui s'exécutent automatiquement ne peuvent pas contenir de paramètres d'entrée ou de sortie.

Utilisez le paramètre sp_procoption pour exécuter une procédure stockée chaque fois qu'une instance de SQL Server est lancée. La syntaxe est :

sp_procoption [ @ProcName = ] 'procedure'     
    , [ @OptionName = ] 'option'     
    , [ @OptionValue = ] 'value'

Par exemple :

EXEC sp_procoption @ProcName = myProcedure    
    , @OptionName = 'startup'   
    , @OptionValue = 'on';

Pour exécuter plusieurs procédures qui n’ont pas besoin d’être exécutées en parallèle, définissez une procédure comme procédure de démarrage, puis appelez les autres procédures à partir de cette procédure de démarrage. Cette procédure n’utilisera qu’un seul thread de travail.

Les procédures de démarrage doivent se trouver dans la base de données principale.