Drop Down MenusCSS Drop Down MenuPure CSS Dropdown Menu

samedi 29 mars 2014

SQL Exercices Procédures stockées

3/29/2014 07:28:00 AM Posted by Ahmed
                                Exercices Procédures stockées 

1--Ecrire  un  programme  qui  calcule  le  montant  d’une  commande  et  affiche  un
message 'Commande Normale' ou 'Commande Spéciale' selon que le  montant est
inférieur ou supérieur à 100000 DH

Declare @Montant decimal 
Set @Montant=(Select Sum(PUArt*QteCommandee) from Commande C, Article 
A,  LigneCommande  LC  where  C.NumCom=LC.NumCom  and 
LC.NumArt=A.NumArt and C.NumCom=10) 
If @Montant is null 
Begin 
Print 'Cette Commande n''existe pas ou elle n''a pas d''ingrédients' 
Return 
End 
if @Montant <=10000 
Print 'Commande Normale' 
Else 
Print 'Commande Spéciale

2--Ecrire un programme qui supprime l'article numéro 8 de la commande numéro 5
et met à jour le stock. Si après la suppression de cet article, la commande numéro 5
n'a plus d'articles associés, la supprimer.

Declare @Qte decimal 
Set  @Qte=(select  QteCommandee  from  LigneCommande  where  NumCom=5  and 
NumArt=8) 
Delete from LigneCommande where NumCom=5 and NumArt=8 
Update article set QteEnStock=QteEnStock+@Qte where NumArt=8 
if not exists (select numcom from LigneCommande where NumCom=5) 
Delete from commande where NumCom=5


3.  Ecrire  un  programme  qui  affiche  la  liste  des  commandes  et  indique  pour  chaque
commande  dans  une  colonne  Type  s'il  s'agit  d'une  commande  normale
(montant <=100000 DH) ou d'une commande spéciale (montant >= 100000 DH)


Select C.NumCom, DatCom, Sum(PUArt*QteCommandee), 'Type'= 
     Case 
 When Sum(PUArt*QteCommandee) <=10000 then 'Commande Normale' 
  Else 'Commande Spéciale' 
     End 
From Commande C, Article A, LigneCommande LC  
Where C.NumCom=LC.NumCom and LC.NumArt=A.NumArt 
Group by C.NumCom, DatCom  

4.  A  supposer  que  toutes  les  commandes  ont  des  montants  différents,  écrire  un
programme  qui  stocke  dans  une  nouvelle  table  temporaire  les  5  meilleures
commandes  (ayant  le  montant  le  plus  élevé)  classées  par  montant  décroissant  (la
table à créer aura la structure suivante : NumCom, DatCom, MontantCom)


Create Table T1 (NumCom int, DatCom DateTime, MontantCom decimal) 
Insert  into  T1  Select  Top  5  C.NumCom,  DatCom,  Sum(PUArt*QteCommandee)  as 
Mt  From Commande C, Article A, LigneCommande LC 
Where C.NumCom=LC.NumCom and LC.NumArt=A.NumArt 
Group by C.NumCom, DatCom 
Order by Mt Desc 

5---Ecrire un programme qui :
  Recherche le  numéro de commande le  plus élevé dans la table commande
et l'incrémente de 1
  Enregistre une commande avec ce numéro
  Pour chaque article dont la quantité en stock est inférieure ou égale au seuil
minimum enregistre une ligne de commande avec le numéro calculé et une
quantité commandée égale au triple du seuil minimum


if exists(select NumArt from article where QteEnStock<=SeuilMinimum) 
Begin 
Declare @a int 
set @a=(select max(NumCom) from commande) + 1 
insert into commande values(@a, getdate()) 
insert into lignecommande Select @a, NumArt, SeuilMinimum * 3 
From article Where QteEnStock <=SeuilMinimum 
End