Beruflich Dokumente
Kultur Dokumente
Exercice 2:
Ecrire un bloc PL/SQL qui affiche toutes les opérations d’emprunts effectués par les abonnées
entre deux dates données (les deux dates seront choises par le développeur). Vous allez
afficher les numéros, nom et prénom de chaque abonné suivi des livres empruntés. Vous allez
afficher le cote du livre emprunté, la date de début emprunt et la date de retour.
Declare
CURSOR c_ab IS
V_date_deb date ;
V_date_fin date ;
BEGIN
V_date_deb = to_date(’01/10/2019’,DD/MM/YYYY);
V_date_fin = to_date(’31/10/2019’,DD/MM/YYYY);
End if;
End loop;
End loop;
End;
Exercice 4:
Ecrire un bloc PL/SQL qui affiche toutes les opérations d’emprunts effectués par les
abonnées et qui ont entrainé des retards. Vous allez afficher les numéros, nom et prénom de
chaque abonné suivi des livres empruntés et non rendus dans les délais. Vous allez afficher le
cote du livre emprunté, la date de début emprunt et la date de retour si le livre est rendu.
Un abonné est en retard si la date du jour (sysdate) est supérieure à la date d’emprunt plus la
durée d’emprunt et le champ date retour est vide (NULL) OU la date de retour est supérieure
à la date emprunt plus la durée.
Declare
CURSOR c_ab IS
UNION
End loop;
End loop;
End;
Exercice 5:
Ecrire une fonction qui prend en paramètre le numéro d'un abonné et retourne le nombre de
fois ou il n'a pas rendu un livre dans les délais.
Un abonné est en retard si la date du jour (sysdate) est supérieure à la date d’emprunt plus la
durée d’emprunt et le champ date retour est vide (NULL) OU la date de retour est supérieure
à la date emprunt plus la durée.
V_delai number;
V_count number;
V_type varchar(30);
BEGIN
Else v_delai := 7;
End if;
WHERE num_abonne=p_num
AND date_retour > date_emprunt + v_delai OR (date_retour = NULL AND sysdate > date_emprunt +
v_delai);
Return (v_count);
End;
Exercice 6:
Ecrire une fonction qui prend en paramètre le cote d'un livre et retourne le numéro de l'abonné
qui l'a emprunté le plus.
CURSOR c_numAbonne IS
From emprunter
GROUP BY num_abonne
BEGIN
Open c_numAbonne;
Close c_numAbonne;
Return v_numAbonne;
End;
Exercice 7:
Ecrire une procédure qui prend en paramètre le cote d'un livre et détermine le nom et prénom
de l'abonné qui l'a emprunté le plus.
return number is
cursor c_emp is
group by num_abonne,nom,prenom
order y nb_emp desc;
v_num number;
v_nb number;
begin
open c_emp;
close c_emp;
end;
Exercice 8:
Ecrire une fonction qui prend en paramètre le cote d'un livre et retourne le nombre de fois ou
il a été à l'origine d'une sanction.
return number is
nb_sanction number;
begin
from sanctions
where cote=p_cote;
return nb_sanction;
end;
Exercice 9:
Ecrire une fonction qui prend en paramètre le numéro d'un abonné et retourne le nombre de
fois ou il a été sanctionné.
return number is
nb_sanction number;
begin
select count(*) into nb_sanction
from sanctions
where num_abonne=p_num;
return nb_sanction;
end;
Exercice 10:
Ecrire une procédure qui prend en paramètres deux dates et détermine le cote du livre le plus
emprunté entre ces deux dates ainsi que numéro de l'abonné qui a réalisé le plus d'empreints.
cursor c_emp1 is
from emprunter e
group by num_abonne
cursor c_emp2 is
from emprunter
group by cote
v_nb number;
begin
open c_emp1;
close c_emp1;
open c_emp2;
close c_emp2;
end;
Exercice 11:
Ecrire un bloc PL/SQL qui affiche les opérations d'empreint relatives au livre le plus
emprunté.
CURSOR c_liv IS SELECT cote, count(*) FROM Emprunter GROUP BY cote ORDER BY DESC;
CURSOR c_emp (p_cote varchar2) IS SELECT * FROM Emprunter WHERE cote = p_cote;
V_cote varchar2(50);
V_count number;
BEGIN
OPEN c_liv
Close c_liv;