Bases de Données / Databases

Site Web de l'équipe BD du LIP6 / LIP6 DB Web Site

Outils pour utilisateurs

Outils du site


site:enseignement:licence:2i009:documents-tme:tme-plsql

Ceci est une ancienne révision du document !


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

commandedescription
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

  1. 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;
/
site/enseignement/licence/2i009/documents-tme/tme-plsql.1483723146.txt.gz · Dernière modification: 06/01/2017 18:19 par camelia