site:enseignement:licence:2i009:documents-tme:tme-plsql
Ceci est une ancienne révision du document !
Table des matières
TME PL/SQL
Nous travaillerons dans ce TP sur les trois tables suivantes qui permettent de décrire des employés, des projets, l'affectation des employés aux projets et les grilles de salaire pour différents profils de postes :
- EMPLOYE (NumSS, NomE, PrenomE, VilleE, DateNaiss)
- PROJET ( NumProj, NomProj, RespProj, VilleP, Budget)
- EMBAUCHE (NumSS, NumProj, DateEmb, Profil)
- GRILLE_SAL (Profil, Salaire)
La clé primaire de chaque table est soulignée.
Rappels
Pour exécuter une procédure dans SQL*PLUS utilisez la commande:
exec nom_procedure(liste_paramètres)
Pour afficher les éventuelles erreurs lors de la création d'une procédure ou d'une fonction, dans SQL*PLUS utilisez la commande:
SHOW err
CONSTITUTION DE LA BASE DE DONNÉES
commande | description |
---|---|
cd mon_répertoire | aller dans votre répertoire de travail |
téléchargez le fichier tme10.tar | |
tar xvf tme10.tar | désarchiver le fichier |
cd TME10 | aller dans le répertoire du tme |
@vider | Vider votre compte |
@TME10-creations | créer le schéma Entreprise |
@TME10-insertions | peupler la base Entreprise |
Pour vérifier que votre base a été peuplée, exécuter les requêtes suivantes :
SELECT COUNT(*) AS Num_employes FROM employe; // retourne 11 SELECT COUNT(*) AS Num_projets FROM projet; // retourne 3 SELECT COUNT(*) AS Num_embauche FROM embauche; // retourne 3 SELECT COUNT(*) AS Num_sal FROM grille_sal; // retourne 3
Exercices
- Copier-coller le bloc anonyme ci-dessous (jusqu'au caractère /). Exécutez ce programme puis commentez le résultat.
DECLARE trouve BOOLEAN; BEGIN FOR r IN (SELECT numproj, nomproj, villep FROM Projet ORDER BY nomproj) LOOP dbms_output.put_line('-----------------------------------'); dbms_output.put_line('Projet: '||r.nomproj||' dans la ville '||r.villep); dbms_output.put_line('-----------------------------------'); trouve := FALSE; FOR r2 IN (SELECT nome, prenome FROM employe e, embauche b WHERE e.numss=b.numss AND b.numproj=r.numproj ) LOOP dbms_output.put_line('Employé: '|| r2.nome||', '|| r2.prenome); trouve := TRUE; END LOOP; IF(trouve = FALSE) THEN dbms_output.put_line('Pas d''employé'); END IF; END LOOP; END; /
- (Curseur Implicite). Écrivez un bloc PL/SQL anonyme qui supprime tous les employés de la table EMPLOYE qui ont 70 ans ou plus et qui affiche le nombre de lignes qui ont été supprimées ou le message 'Aucun employé supprimé' si aucun employé n'a plus de 70 ans. Utilisez les attributs d'un curseur implicite.
- (Curseur) Écrivez un bloc PL/SQL anonyme qui modifie tous les noms des profils dans la table grille_sal en ajoutant la lettre 'P' devant chaque nom de profil. Pour chaque profil modifié dans la table grille_sal les valeurs correspondantes dans la table embauche doivent également être modifiées. Utilisez un curseur.
site/enseignement/licence/2i009/documents-tme/tme-plsql.1483723636.txt.gz · Dernière modification : de camelia