TME PL/SQL

Exercice 1

Exercice 2

Nous travaillerons par la suite 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 :

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

  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;
   /