Vous êtes sur la page 1sur 3

Chapitre 9 : Procédures stockées et déclencheurs

I. Définition
Une procédure stockée est un ensemble nommé d’instructions T_SQL, précompilée et stockée
sur le serveur. Elle permet d’encapsuler les tâches répétitives afin de les exécuter
efficacement.

II. Avantage des procédures


Les procédures stockées offrent plusieurs avantages :
- performance : les PS sont plus performantes car le serveur vérifie la syntaxe à la création
et compile la procédure une fois pour toute. Les exécutions ultérieures de ces procédures
seront plus rapides ;
- réutilisabilité : la PS peut être appelée à n’importe quel moment. Ceci permet une
modularité et encourage la réutilisation du code ;
- simplification : les règles et politiques de fonctionnement encapsulées dans les PS
peuvent être modifiées au même endroit. Tous les clients peuvent utiliser les mêmes PS
afin de garantir la cohérence des accès aux données et de leurs modifications ;
- Accès réseau : elles contribuent à la réduction du trafic sur le réseau. Au lieu d’envoyer
des centaines d’instructions T_SQL sur le réseau, les utilisateurs peuvent effectuer une
opération complexe à l’aide d’une seule instruction, réduisant ainsi le nombre de
demandes échangées entre le client et le serveur.

III. Gestion des procédures stockées

a- Création :
L’instruction CREATE PROCEDURE permet de créer une procédure stockée.
Syntaxe :
CREATE PROC[EDURE] nom_procedure
[@Parametre type_donnees [=default] [OUTPUT] [,..]]
AS
[BEGIN]
Instructions …
[END]

Exemples : requêtes paramétrées


1/
1 CREATE PROC psmoyenne_etud
2 (@numEtud INT,
3 @moyEtud REAL OUTPUT)
4 AS
5 BEGIN
6 SELECT @moyEtud = AVG(Evaluation)
7 FROM Notes
8 WHERE num_etud = @numEtud
9 END

2/
1 CREATE PROC InfoDuClient
2 (@numero INT) -- ne pas oublier de preciser le type

3
Chapitre 9 : Procédures stockées et déclencheurs
3 AS
4 SELECT *
5 FROM clients
6 WHERE clt_num = @numero

Exemple : requête avec un paramètre de sortie :


1 CREATE PROC NbClients
2 (@resultat INT OUTPUT)
3 AS
4 SET @resultat = (SELECT COUNT(*) FROM clients)
5 -- il s’agit-la d’une sous-requete

Exemple : requête avec un paramètre d’entrée muni d’une valeur par défaut :
1 CREATE PROC FiltrerClients
2 (@filtre VARCHAR(255) = ’%’)
3 AS
4 SELECT *
5 FROM clients
6 WHERE clt_nom LIKE @filtre
7 -- en l’absence de parametre tous les clients seront affiches

b- Exécution:
L’instruction EXECUTE permet d’exécuter une procédure.
Syntaxe :
[[EXEC[UTE]] [@return_status=]] nom_procedure
[[@parameter] {value| @variable} [OUTPUT]| [DEFAULT]]

Exemple :
DECLARE @moyenne real
EXEC psmoyenne_etud
@ numEtud=10,
@ moyEtud = @moyenne OUTPUT
PRINT @moyenne
GO

c- Modification
L’instruction ALTER PROC permet de modifier une procédure stockée :

1 ALTER PROC InfoDuClient


2 (...) -- les parametres
3 AS
4 ... -- nouveau corps

d- Suppression :
L’instruction DROP PROC permet de supprimer une procédure stockée :

1 DROP PROCEDURE InfoDuClient

3
Chapitre 9 : Procédures stockées et déclencheurs
IV- Déclencheurs

Les déclencheurs ou triggers servent à étendre les mécanismes de gestion de l’intégrité à


des contraintes très complexes et permettre le contrôle de saisie. Il s’agit de code
déclenché lors des événements de la base de données (INSERT, DELETE, UPDATE).
Un déclencheur est toujours rattaché à une table ou à une vue.

a. Pour créer un déclencheur on a :


Syntaxe :

CREATE TRIGGER nom_trigger


ON table_ou_vue {FOR{ [INSERT] [ ,] [UPDATE] [ ,] [DELETE] }
AS
Corps trigger

Exemple : au moment de l'insertion d'un étudiant le déclencheur prenomen


majuscule est exécuté et affecte le nom étudiant en majuscule à la colonne
prenom_etud

CREATE TRIGGER NomEnMajuscule


ON etudiant FOR INSERT
AS
UPDATE etudiant
SET prenom_etud = UPPER(nom_etud)

b. Pour modifier un déclencheur on a :


Syntaxe :

ALTER TRIGGER nom_declencheur


... -- son nouveau code

c. Pour supprimer un déclencheur on a :


Syntaxe :

DROP TRIGGER nom_declencheur

d. Pour suspendre provisoirement un déclencheur (sans le supprimer) on a :


Syntaxe :

ALTER TABLE nom_table


DISABLE TRIGGER nom_declencheur

... -- d’autres instructions puis

ALTER TABLE nom_table ENABLE TRIGGER nom_declencheur

3
Chapitre 9 : Procédures stockées et déclencheurs

Vous aimerez peut-être aussi