Vous êtes sur la page 1sur 5

TD N3 --- Exercices PL/SQL

EXERCICE 1 :

Parmi les déclarations de variables suivantes, déterminer celles qui sont


incorrectes :

A - DECLARE
v_id NUMBER(4);

B - DECLARE
v_x,v_y,v_z VARCHAR2(10);

C - DECLARE
v_date_naissance DATE NOT NULL;

D - DECLARE
v_en_stock BOOLEAN := 1;

E - DECLARE
emp_record emp_record_type;

F - DECLARE
TYPE type_table_nom IS TABLE OF VARCHAR2(20)
INDEX BY BINARY_INTEGER;
dept_table_nom type_table_nom;

EXERCICE 2: Programme PL/SQL

1. Utilisation des boucles conditionnelles (IF, LOOP, …, FOR)


a) Ecrire un programme PL/SQL qui affiche les nombres par PAS de 10
b) Ecrire un programme PL/SQL qui permet d’afficher les nombres
compris entre 10 et 20
2. Ecrire un programme PL/SQL qui affiche les nombres premiers compris entre
2 et 50 ;
3. Ecrire un programme PL/SQL qui permet d’afficher successivement les tables
de multiplication 2 jusqu’à la table de multiplication 6
4. Ecrire une Procédure qui affiche le MINIMUM entre deux nombres a et b;
5. Ecrire une Fonction qui affiche le MAXIMUM entre deux nombres a et b ;
6. Ecrire une Fonction en version itérative qui
1 si n = 0
calcule la FACTORIELLE d’un nombre ; n! = n * (n - 1)! Sinon
7. Ecrire une fonction en version récursive qui
calcule la FACTORIELLE d’un nombre

Cours Bases de Données – 3iL3 - Pierre PEP, Ing Page 1


8. Ecrire une fonction en version itérative
qui calcule la suite de FIBONACCI d’un U0 = 0
nombre ; U1 = 1
9. Ecrire une fonction en version récursive Un = Un -1 + Un-2 pour n >= 2
qui calcule la suite de FIBONACCI d’un
nombre ;

10. Ecrire une fonction en version récursive qui calcule la PUISSANCE d’un
nombre an (n>0). Refaire le même cas lorsque (n<0 : valeur négative)

PROBLEME:

Se connecter à la Base de Données :

1. Créer les Tables de votre BDD avec le modèle de données concus


précédemment.
Exemple de tables : Clients, Commandes, Lignes-Commandes, Salaries, etc……

2. Ecrire un programme PL/SQL qui permet à partir du code du Client d’afficher


son Nom, son Prénom et la Ville.
- Utiliser les Variable de même type qu'un attribut d'une table de la base
- Utiliser les Variable de même structure qu'une ligne d'une table de la base
NB : Faire le test pour les autres tables de la BDD.
3. Ecrire un programme PL/SQL qui permet de vérifier la quantité en stock des
articles et renvoi une alerte de message
4. Ecrire une procédure stockée qui permettra d’augmenter de salaire d’un salarié
de 15%.
5. Ecrire une procédure stockée qui prend en paramètre le salarie et le taux, puis
calcule et affiche l’ancien et le nouveau salaire.
6. Ecrire une fonction qui calcule la masse salariale.
7. Les curseurs Implicite & Explicite

a) Curseur Implicite
Ecrire un programme PL/SQL qui permet de mettre à jour le salaire de chaque
Salarie, utiliser la fonction SQL%ROWCOUNT (NB : le montant à ajouter est 5000)

b) Curseur Explicite
Ecrire un programme PL/SQL avec curseur explicite qui permet d’afficher tous
les Clients, les Commandes, les Salaries, etc…. de la Base de Données y associer des
exceptions.

Cours Bases de Données – 3iL3 - Pierre PEP, Ing Page 2


8. Table et Curseur Basé sur les enregistrements Records

a) Ecrire un programme PL/SQL qui affiche les informations d’un Client,


d’une Commande, d’un Salarie.
b) Ecrire un programme PL/SQL qui affiche les informations d’un Client,
d’une Commande, d’un Salarie. (avec curseur).

9. Gestion des Exceptions & RAISE Exceptions

a) Ecrire un programme PL/SQL qui permet à partir du code du Client


d’afficher son Nom, son Prénom et la Ville qu’il gagne (y associer la gestion
des Exceptions).

b) Ecrire un programme PL/SQL qui permet à partir du code du Salarie


d’afficher son Nom, son Prénom et la Salaire qu’il gagne (y associer la
gestion des Exceptions).

10. Les triggers

a) Ecrire un Trigger en PL/SQL qui signale toute modification effectuée sur le


salaire d’un Professeur (Table Salarie)
b) Faire une nouvelle Insertion des Données
c) Faire une mise à jour du salaire d’un Salarié

11. Les Packages


a) Création du Package
b) Package Body
c) Exécution du Package
Exercice : Package pour trouver le salaire d’un Salarie

12. Bases de Données XML (XML DB)


Création des tables, Insertion & MAJ des données, extraction des données
etc….

Cours Bases de Données – 3iL3 - Pierre PEP, Ing Page 3


CLIENTS COMMANDES
PK N° Client PK N° Commande

Nom #N° Client


Prenom #N° Salaire
Adresse Date-Commande
Ville Taux
Pays Etat-Commande
Phone Date-Envoi

LIG-COMMANDES SALARIES
PK N° Lig-Cmde PK N° Salaire

#N° Commande Nom Salarie


#Ref Article Prenom Salarie
Qte-Commande Fonction
Salaire
Commission

CATEGORIES ARTICLES
PK Code Categorie PK Ref Article

Libelle Categorie #Code Categorie


Designation
Qte Stock

Cours Bases de Données – 3iL3 - Pierre PEP, Ing Page 4


AUTRES EXEMPLES
EXERCICE 3: On considère la table suivante:
PILOTE (Matricule, Nom, Ville, Age, Salaire).
Écrivez un programme PL/SQL qui calcule la moyenne des salaires des pilotes dont
l’âge est entre 30 et 40 ans.

EXERCICE 4: Soit la base de données suivante (simplifiée) de gestion de la mémoire


d'un ordinateur :

DISQUE (nom, capacité, vitesse, fabricant);


PARTITION (nomDisque, nomPartition, taille);

Écrivez en PL/SQL le déclencheur (trigger) qui lors de l’insertion d’une nouvelle ligne
dans la table PARTITION vérifie que la taille totale des partitions sur le disque
concerné (y compris la partition qui est en cours d'être ajoutée) ne dépasse pas la
capacité du disque. Si tel n’est pas le cas, l’enregistrement de la nouvelle cage ne doit
pas être fait et un message doit être affiché pour indiquer cette anomalie.

EXERCICE 5 : Soit la relation :

EMPLOYE (ID, NOM, DEPARTEMENT, AGE, SALAIRE).


Écrivez un bloc PLSQL qui effectue une augmentation de 200.000 FCFA du salaire
des employés du département 'Commercial' et qui utilise le dernier curseur implicite
pour afficher le nombre d’employés affectés par ce changement.

EXERCICE 6: Soit la relation EMPLOYE de l'exercice précédent. Écrivez un bloc


PL/SQL qui affiche les noms des employés du département 'Commercial' qui sont
âgés de plus de 40 ans. Utilisez un curseur implicite dans une boucle FOR

EXERCICE 7: Soit la relation EMPLOYE de l'exercice précédent. Écrivez une


procédure PLSQL qui prends en paramètre un NUMBER (age limite) et qui affiche
pour chaque département le nombre des employés qui dépassent l’âge limite. Utilisez
un curseur avec paramètre l’âge limite

Cours Bases de Données – 3iL3 - Pierre PEP, Ing Page 5

Vous aimerez peut-être aussi