Les procédures stockées (Stored Procedures) sont des objets correspondant à un ensemble d’instructions du LMD,
pouvant être exécutées par simple appel de leur nom ou par l’instruction EXECUTE. Ce sont de véritables programmes
pouvant recevoir des paramètres, renvoyer des valeurs, être exécutés à distance, ayant leurs propres droits d’accès
(privilège EXECUTE). De plus, les procédures stockées sont stockées dans le cache mémoire sous forme compilée lors
de leur première exécution, ce qui accroît les performances (pour les exécutions suivantes !). Les procédures stockées
peuvent être temporaires, c’est-à-dire créées pour une session (locale) ou plusieurs sessions (globale) du user. Pour
SQL Server une procédure stockée peut être définie comme une suite d’instructions Transact SQL, stockée dans la
base de données et parfaitement identifiée par son nom. Pour permettre à cette suite d’instructions de s’adapter au
plus grand nombre de cas, certaines valeurs du script sont paramétrables lors de l’appel de la procédure. Comme
toute suite d’instructions Transact SQL, il est possible par exemple de trouver une instruction SELECT. L’exécution de
la procédure déclenchera l’exécution de la requête et le résultat sera envoyé à l’environnement qui a demandé
l’exécution de la procédure.
De nombreuses procédures stockées sont fournies par Microsoft et sont créées lors de l’installation des serveurs dans
la base master. Ces procédures permettent de manipuler les tables système. Leur nom commence par "sp_". Les
différents cas d’utilisation de procédures stockées sont les suivants :
• Enchaînement d’instructions.
• Accroissement des performances.
• Sécurité d’exécution.
• Manipulation des données système.
• Mise en oeuvre des règles d’entreprise.
• Traitements en cascade.
La création ou la modification des procédures stockées se fait par des instructions du Langage de Définition de
données ou par SQL Server Management Studio.
Syntaxe
CREATE PROC[EDURE] nom[;numero][(param1[,...])][{FOR REPLICATION|WITH
RECOMPILE}][WITH ENCRYPTION]AS instructions.
nom
Nom d’objet unique dans la base. Précédé d’un signe #, la procédure sera temporaire locale, avec deux # elle sera
temporaire globale.
numéro
Numéro d’ordre pour des procédures ayant le même nom.
param1,...
Paramètre sous la forme : @nom type [ VARYING ][ = valeur ]
[ OUTPUT ], pouvant être passé à la procédure. OUTPUT permet de spécifier un paramètre retourné par la
procédure.
VARYING spécifie le jeu de résultats pris en charge comme paramètre de sortie. S’applique uniquement aux
paramètres de type cursor.
FOR REPLICATION
Permet de préciser que la procédure sera utilisée lors de la réplication.
WITH RECOMPILE
La procédure sera recompilée à chaque exécution.
WITH ENCRYPTION
Permet de crypter le code dans les tables système.
Exemples
Code d’une procédure stockée système depuis Enterprise Manager :
AM1
Cours 9 : Gestion des procédures stockées
AM2