Académique Documents
Professionnel Documents
Culture Documents
1. Définir un bloc PL/SQL anonyme, en prévoyant les exceptions que vous jugez nécessaire,
permettant de lire les détails des projets effectués par tous les employés, le résultat est trié
Réponse :
Set serveroutput on ;
DECLARE
E_emp Exception;
rec C_emp%rowtype;
BEGIN
Open C_emp;
Projet',15));
loop
DBMS_output.put_line(RPAD(rec.Matr,15) || RPAD(rec.CodeP,15) ||
RPAD(rec.NomP,15));
end loop;
if(C_emp%rowcount = 0) then
raise E_emp;
end if;
close C_emp;
EXCEPTION
when E_emp then
END;
2. Définir un bloc PL/SQL anonyme, en prévoyant les exceptions que vous jugez nécessaire,
permettant de lire les détails de tous les employés ainsi que le nombre de projets effectués
Réponse :
Set serveroutput on ;
DECLARE
Cursor C_emp is select E.Matr, E.NomE, E.Poste, E.NumDept from EMP E order
by E.Matr;
Participation P, EMP E
E_emp Exception;
rec C_emp%rowtype;
BEGIN
Open C_emp;
loop
Open C_NBProjets(rec.Matr);
nbPr:=0;
close C_NBProjets;
end loop;
if(C_emp%rowcount = 0) then
raise E_emp;
end if;
close C_emp;
EXCEPTION
END;
Réponse :
Set serveroutput on ;
DECLARE
Cursor C_emp is select E.Matr, E.NomE, E.Poste, E.NumDept from EMP E order
by E.Matr;
E_emp Exception;
rec C_emp%rowtype;
BEGIN
Open C_emp;
loop
begin
exception
nbPr:=0;
end;
DBMS_output.put_line(RPAD(rec.Matr,15) || RPAD(rec.NomE,15) ||
end loop;
if(C_emp%rowcount = 0) then
raise E_emp;
end if;
close C_emp;
EXCEPTION
le plus élevé des employés d'un département donné dont le numéro est fourni comme
paramètre :
a. Ecrire cette fonction sous forme d’une fonction non stockée dans un bloc
anonyme.
Réponse :
Set serveroutput on ;
DECLARE
BEGIN
Open C_salaire;
if(C_salaire%rowcount = 0) then
raise E_salaire;
end if;
close C_salaire;
return MaxSal;
EXCEPTION
return NULL;
END;
BEGIN
SalaireMax:= max_sal_dept(10);
END;
Réponse :
return Number is
E_salaire Exception;
BEGIN
Open C_salaire;
if(C_salaire%rowcount = 0) then
raise E_salaire;
end if;
close C_salaire;
return MaxSal;
EXCEPTION
return NULL;
END max_sal_dept;
c. Appeler cette fonction dans les deux cas. Quelle est la différence entre les deux
cas?
Réponse :
La fonction non stockée est définie est appelée dans le même bloc anonyme (ou autre
bloc nommé), alors elle n’est pas visible ailleurs. Cependant, la fonction stockée est
définie d’une manière indépendante, c’est un bloc nommé indépendant. Elle est
Set serveroutput on ;
DECLARE
BEGIN
SalaireMax:= max_sal_dept(10);
END;
4. Dans un bloc PL/SQL anonyme, déclarer et tester une procédure « ListeProjets1 » qui
Réponse :
Set serveroutput on ;
DECLARE
procedure ListeProjets1 is
E_Projets Exception;
rec C_Projets%rowtype;
BEGIN
Open C_Projets;
Loop
DBMS_output.put_line(RPAD(rec.Codep,20) || RPAD(rec.NomP,20));
end Loop;
if(C_Projets%rowcount = 0) then
raise E_Projets;
end if;
close C_Projets;
EXCEPTION
END;
BEGIN
-- appel de la procédure :
ListeProjets1;
END;