Académique Documents
Professionnel Documents
Culture Documents
Année
Réseaux
universitaire :
TP3 : Transact-SQL 2022/2023
Objectifs :
• T-SQL – procédures stockées / les déclencheurs
Exercice 1 :
Soit la base de données SQL server GestionCom (la même base de données de l’exercice d’initiation
de T-SQL)
o Article (NumArt, DesArt, Prix, QteEnStock, SeuilMin, SeuilMax)
o Commande (NumCom, DatCom)
o LigneCommande (NumCom, NumArt, QteCommande)
While @@fetch_status =0
Begin
Print 'Commande N° : ' + convert(varchar,@a) + ' effectuée le : ' +
convert(varchar,@b)
Select Numart from LigneCommande where numcom=@a
Print 'Son montant est : ' + convert(varchar,@c)
Fetch Next from C1 into @a,@b,@c
End
Close C1
Deallocate C1
2- Ecrire un programme qui pour chaque commande vérifie si cette commande a au moins un
article. Si c'est le cas affiche son numéro et la liste de ses articles sinon affiche un message
d'erreur :
Aucun article pour la commande …. Elle sera supprimée et supprime cette commande
2-
Declare @a int
Declare Cur_Com Cursor for select NumCom from Commande
open Cur_Com
Fetch Next from Cur_Com into @a
While @@fetch_status =0
Begin
if not exists (Select NumArt from LigneCommande where NumCom=@a)
Begin
Print 'Aucun article pour la commande N° : ' + convert(varchar,
@a) + '. Elle sera supprimée'
Delete From Commande Where NumCom=@a
End
Else
Begin
Print 'Commande n° : ' + convert(varchar, @a)
Select A.NumArt, DesArt, PUArt, QteCommandee From Article A,
Lignecommande LC Where A.NumArt=LC.NumArt and NumCom=@a
End
Fetch Next from Cur_Com into @a
End
Close Cur_Com
Deallocate Cur_Com
Exec SP_NbrCommandes
2. Créer une procédure stockée nommée SP_ComPeriode qui affiche la liste des commandes
effectuées entre deux dates données en paramètre.
6. Créer une procédure stockée nommée SP_NbrArtCom qui retourne le nombre d'articles d'une
commande dont le numéro est donné en paramètre.
7. Créer une procédure stockée nommée SP_TypePeriode qui retourne le type de la période en
fonction du nombre de commande. Si le nombre de commandes est supérieur à 100, le type sera
'Période rouge'. Si le nombre de commandes est entre 50 et 100 le type sera 'Période jaune' sinon
le type sera 'Période blanche' (exploiter la procédure SP_NbrCommandes) :
If @NbrCom >100
Set @TypePer='Période Rouge'
Else
Begin
If @NbrCom <50
Set @TypePer= 'Période blanche'
Else
Set @TypePer= 'Période Jaune'
End
8. Créer une procédure stockée nommée SP_TypePeriode_ qui renvoie un code de retour. Si le
nombre de commandes est supérieur à 100, la procédure renvoie 1. Si le nombre de commandes
est entre 50 et 100, la procédure renvoie 2. Si le nombre de commandes est inférieur à 50, la
procédure renvoie 3.
Exercice 3 : (Triggers)
En utilisant la base de données créer dans l’exercice 1,
1- Créer des triggers INSTEAD OF pour Empêcher l'insertion des commandes avec une date de
commande dans le futur.
2- Créer un trigger suivant empêche la suppression des commandes ayant des articles associés
RETURN
END
4- Créer un trigger suivant à l'ajout d'une ligne de commande vérifie si les quantités sont
disponibles et met le stock à jour
5- Créer un trigger suivant à la modification d'une ligne de commande vérifie si les quantités sont
disponibles et met le stock à jour