**Module : SGBD –**
**TD-TP 3 (PL/SQL)**
**Exercice 1:**
Ecrire un programme PL/SQL permettant d’afficher votre catalogue système (liste des tables et des vues de votre compte, disponible grâce à la vue système **TAB**(TNAME, TABTYPE)) sous la forme :
L’objet **une\_table** est de type TABLE
L’objet **une\_vue** est de type VIEW …
Publicité
**Exercice 2:**
L’entreprise employant les personnes de la table EMP est délocalisée des États-Unis en France. Il est donc nécessaire de convertir leur salaire et leur commission en euros (pour simplifier, on utilisera le taux de conversion : 1 USD = 1,2 €). Tous les employés voient également augmenter leur salaire de 25 % après conversion.
1. Sous SQL, créer une nouvelle table vide EMP\_FR de même structure que EMP. On pourra, par soucis de rapidité, recopier la table EMP dans EMP\_FR pour en obtenir la structure, puis effacer tous les n-uplets de EMP\_FR. 2. Ecrire un programme PL/SQL permettant de recopier tous les n-uplets de la table EMP dans la table EMP\_FR en effectuant au passage les opérations nécessaires sur le salaire et la commission. Traiter le cas où la table EMP est vide comme une exception.
**Exercice 3:**
Une entreprise récupère un stock ancien de produits. La base de données qui décrit ce stock indique des prix en Francs. Ecrire un programme PL/SQL permettant de construire, à partir d’une table PRODUIT (NUMPROD, LIBELLE, PU, NUMFOURN), une table PRODUIT2 telle que :
1. La désignation des produits soit écrite en majuscules ; 2. le prix unitaire en francs des produits soit converti en euros (1 euro=6.559 F). Le prix en euros devra être entier (arrondir au prix le plus proche).
Publicité
**Cas particuliers à traiter**
* Si la table PRODUIT est vide, la table PRODUIT2 devra contenir uniquement le n-uplet (0, ‘Pas de produit’, NULL, NULL). * Si un prix de la table produit est NULL, son prix en euros doit être 0.
**Indications :**
* 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 PRODUIT2. * Utiliser les fonctions SQL UPPER, ROUND et NVL.