Vous êtes sur la page 1sur 3

Matière : Ingénierie des bases de données Année Universitaire : 2020/2021

Niveau : 2éme année LSI


Enseignante de TP : Ameni YOUSFI

TP n ° 3
Ingénierie des Bases de
Données (PL/SQL)

Exercice n°1 : (les conditions)

1) Ecrire un programme plsql qui permet de permuter les salaires des employés 120 et 122.
2) Ecrire un programme plsql (en utilisant CASE) qui permet d’augmenter le salaire de
l’employé 115 selon ces conditions :
• Si l’expérience de l’employé est supérieure à 10ans alors augmenter le salaire
par 20%
• Si l’expérience de l’employé est supérieure à 5ans alors augmenter le salaire par
10%
• Sinon augmenter le salaire par 5%
3) Ecrire un programme plsql (en utilisant IF) qui permet de changer le pourcentage de
commission de l’employé-ID =150 selon ces conditions :
• Si le salaire est supérieur à 10000 alors la commission 4%
• Si le salaire est inférieur à 10000 et l’expérience est supérieure à 10ans alors la
commission 35%
• Sinon la commission = 15%
4) Trouver le nom de l’employé et le nom de département de l’employé qui est le manager
de l’employé 103.

Exercice n°2 : (les conditions)


1) On suppose qu’on a la table Articles suivante :
Num_Article Désignation Prix_Unitaire Qté_Stock

Ecrire un bloc PL/ SQL qui affiche le maximum des quantités en stock. Si ce max est
supérieur à la quantité en stock de l’article numéro1, alors diminuer le prix de cet article
de 10%. Dans le cas contraire augmenter le prix de 20%.

1
Vérifier après du bloc PL/SQL que la modification est réalisée
2) Ecrire un bloc PL/SQL qui permet d’afficher la désignation de l’article numéro 10, qui
n’existe pas dans la table Article. Est-ce que ce programme peut générer un problème ?
Ecrire un bloc PL/SQL qui permet d’afficher la désignation de l’article numéro 10, en
cas de problème il affiche « cet article n’est pas enregistré »
3) Ecrire un bloc PL/SQL qui permet de faire les changements suivants au produit numéro
3
• Multiplier le prix unitaire par deux, si la quantité en stock est>=10. Afficher le
message « Prix unitaire du produits N : 3 est multiplié par deux » si la
modification est faite
• Supprimer ce produit, si la quantité en stock est < 10. Afficher le message « Le
produit N : 3 est supprimé » si la suppression est faite

Exercice n°3 : (les boucles& les procédures et les fonctions& exceptions)


On suppose qu’on a la table Articles suivante :
Num_Article Désignation Prix_Unitaire Qté_Stock

Ecrire un bloc PL/SQL qui calcule et affiche le max des prix de tous les articles, en utilisant
une boucle While (il ne faut pas utiliser la fonction SQL MAX). On suppose que les numéros
des articles sont ordonnés et qu’ils commencent à partir de 1.
Exercice n°4 : (les boucles& les procédures et les fonctions& exceptions)
Table voitures
Code_voiture marque type couleur Prix_vente

Table clients
Code_client nom sexe ville

Table ventes
Num_vente Code_client Code_voiture Date_vente

2
1) Ecrire un bloc PL/SQL permettant d’afficher le nombre total de voitures, le nombre de
voitures de couleur rouge ainsi que le pourcentage des voitures de couleur rouge
Traiter comme exception les cas suivants :
• La base de données ne contient aucune voiture.
• La base de données ne contient aucune voiture de couleur rouge
2) Ecrire une procédure qui prend en entrée une couleur et qui permet d’afficher le
pourcentage de voitures ayant cette couleur

Exercice n°5 : (les boucles& les procédures et les fonctions& exceptions)

1. Ecrire un programme PLSQL qui permet de retourner l’année dans laquelle il y avait
un maximum de recrutement d’employés, ainsi dans chaque mois combien d’employés
recrutés.
2. Changer le salaire de l’employé 130 par le salaire de l’employé portant le prénom
‘Ali’.
• Si on n’a pas un employé avec le prénom ‘Ali’, on prend la moyenne de
salaires de tous les employés
• Si on a plus d’un employé portant le prénom ‘Ali’ alors on prend le salaire le
moins élevé.

3. Créer une fonction en prenant le deprt_id elle retourne le nom du manager de ce


département.
4. Créer une fonction qui permet de retourner le nombre de métiers exercés par
l’employé dans le passé (on a besoin d’une table ‘Job_History’)

Vous aimerez peut-être aussi