Académique Documents
Professionnel Documents
Culture Documents
Exercice 1
2001, il est temps de passer à l’Euro pour l’entreprise de VPC dont la base de données CLIENT-COMMANDE-
PRODUIT-FOURNISSEUR. Écrire un programme PL/SQL permettant de construire, à partir de la table
PRODUIT, une table PRODUIT2000 telle que:
la désignation des produits soit écrite en majuscules ;
le prix unitaire en francs des produits soit converti en Euros. Le prix en Euros devra être entier (arrondir au
supérieur).
Cas particuliers à traiter :
Si la table PRODUIT est vide, la table PRODUIT2000 devra contenir uniquement le tuple (0,’Pas de
produit’, NULL, NULL).
Si un prix de la table produit est NULL, son prix en Euros doit être 0.
Indications :
Considérer que la structure de la table PRODUIT2000 a déjà été créée.
Tester si la table PRODUIT est vide. Si ce n’est pas le cas, y accéder séquentiellement à l’aide d’un curseur,
effectuer les transformations sur les champs et stocker le résultat dans la table PRODUIT2000.
Utiliser les fonctions SQL*Plus UPPER, TRUNC et NVL.
Exercice 2
Pour tenter d’établir une corrélation, on souhaite connaître la différence de quantité moyenne entre les
commandes successivement enregistrées dans la table COMMANDE de la base de données CLIENT-
COMMANDE-PRODUIT-FOURNISSEUR. La table COMMANDE est remplie de commandes valuées (c’est-
à-dire, pour lesquelles l’attribut QUANTITE n’est pas NULL) ou non. Les commandes non valuées ne sont pas à
prendre en compte. Écrire un programme PL/SQL permettant de calculer la différence de quantité moyenne entre
les commandes.
Cas particuliers à traiter :
La table COMMANDE contient moins de deux commandes valuées.
Indications :
Créer un curseur contenant les quantités de commandes valuées.
Lire la première quantité puis, pour toutes les quantités suivantes, cumuler la valeur absolue de quantité
courante – quantité précédente (fonction ABS).
Afficher le résultat dans une exception à l’aide de la procédure RAISE_APPLICATION_ERROR. Utiliser
l’opérateur de concaténation || et la fonction TO_CHAR.
Exercice 3
1. Exécutez le script lab4_1.sql pour créer une table MESSAGES. Ecrivez un Bloc PL/SQL pour insérer
des nombres dans la table MESSAGES.
a. Insérez les nombres de 1 à 10, en excluant 6 et 8.
b. Programmer un commit avant la fin du bloc PL/SQL
c. Afficher le contenu de la table MESSAGES pour tester votre bloc PL/SQL
RESULTS
---------
1
2
3
4
5
7
9
10
2. Créez un bloc PL/SQL qui calcul le montant de la commission d’un employé donné, en fonction de son
salaire.
a. Exécutez le script lab4_2.sql qui crée un nouvel employé dans la table EMP.
Note : L’employé aura un salaire NULL.
b. Faites saisir le numéro d’employé à l’utilisateur, à l’aide d’une variable de substitution
SQL*Plus.
c. Si le salaire de l’employé est inférieur à $1000, la commission vaut 10% du salaire.
1
d. Si le salaire de l’employé est compris entre $1000 et $1500, la commission vaut 15% du
salaire.
e. Si le salaire de l’employé est supérieur à $1500, la commission vaut 20% du salaire.
f. Si le salaire de l’employé est NULL, la commission vaut 0.
g. Programmer un commit avant la fin du bloc PL/SQL
h. Exécuter votre programme PL/SQL, utiliser le tableau suivant pour tester chaque cas,
et vérifier la valeur de la commission.
4. Ajoutez une nouvelle colonne STARS varchar2(100), dans la table EMP qui permettra de stocker des
étoiles (*).
5. Créez un programme PL/SQL qui récompense les employés en leur attribuant une étoile dans la colonne
STARS par tranche de salaire de $100.Sauvegardez votre programme PL/SQL sous le nom p4q5.sql.
a. Faites saisir le numéro d’employé à l’utilisateur, par une variable de substitution SQL*Plus.
b. Initialiser une variable qui contiendra un ensemble d’étoile (*).
c. Ajoutez une étoile à la chaîne par tranche de salaire de $100. Par exemple , si l’employé a
un salaire de $800, la chaîne comportera 8 étoiles. Si l’employé touche un salaire de 1250, la
chaîne comportera 13 étoiles.
d. Programmer un Update de la colonne STARS de tous les employés avec cette chaîne (*).
e. Programmer un commit avant la fin du bloc PL/SQL
f. Testez le programme pour les employés qui n’ont pas de salaires et pour ceux qui en ont
un.