Exercice Langage SQL : Requêtes sur les Procédures stockées


Les Procédures stockées

Travail à Faire:

  1. Créer une procédure stockée qui affiche les clients dont la quantité commande est supérieur à 75 et les factures sont réalisées entre 2003 et 2004
  2. Créer une procédure stockée qui retourne la somme des prix à payer par tous les clients en utilisant un paramètre de sortie.
  3. Créer une procédure qui affiche les noms et les prénoms des clients dont le nom commence par ‘Al’ en utilisant un cursor qui permet d’extraire les lignes ligne par ligne
  4. Créer une procédure qui exécute la procédure précédente
  5. Créer la procédure stockée qui compte le nombre de commandes d’un client et affiche le résultat

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
1) Créer une procédure stockée qui affiche les clients dont la quantité commande est supérieur à 75 et les factures sont réalisées entre 2003 et 2004
 
CREATE proc E;1
AS
SELECT * FROM Client WHERE EXISTS
(SELECT * FROM Commande
WHERE IdClient=Client.IdClient AND Quntité>75 AND EXISTS
(SELECT * FROM Facture
WHERE datefacture BETWEEN '01/01/2003'AND '31/12/2004'AND
NumCommande=Commande.NumCommande ))
exec E;1
 
2)  Créer une procédure stockée qui retourne la somme des prix à payer par tous les clients en utilisant un paramètre de sortie.
 
CREATE proc E;2
@somme money output
AS
SELECT @somme = sum(PrixTotal)
FROM Commande
IF @somme  1000
print 'La société va fermer ses portes.'
else
---SELECT 'La société a réalisé ' + convert (varchar(20), @somme)+' F' as PrixTotal
SELECT @somme AS SommeRéalisé
go
declare @P money
exec E;2 @P output
 
3)  Créer une procédure qui affiche les noms et les prénoms des clients dont le nom commence par ‘Al’ en utilisant un cursor qui permet d"’"extraire les lignes ligne par ligne
 
CREATE proc ProcCursor
AS
DECLARE Cur CURSOR FOR
SELECT Nom, Prénom FROM Client WHERE Nom LIKE 'Al%'
OPEN Cur
FETCH NEXT FROM Cur
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO client VALUES(2056,'toto','titi','Mars')
FETCH NEXT FROM Cur
END
CLOSE Cur
DROP proc ProcCursor
exec ProcCursor
 
4)  Créer une procédure qui exécute la procédure précédente
 
CREATE proc ProcAppelante
@P1 varchar(10)
AS
exec @P1
---------
exec  ProcAppelante 'ProcCursor'
 
5)  Créer la procédure stockée qui compte le nombre de commandes d"’"un client et affiche le résultat
 
CREATE proc prc
(@id int,
@var int output)
AS
SELECT @var = count(NumCommande)
FROM Commande WHERE IdClient=@id
GROUP BY IdClient
DROP proc prc
declare @P int
Exec prc 1578,@P output
SELECT @p AS NbreCommandes