2-Tp PS Corrigé
2-Tp PS Corrigé
2-Tp PS Corrigé
2) La procédure permettant d'afficher les stagiaires ayant l'âge dans la tranche précisée par
l'utilisateur.
from stagiaire
where year(curDate())-year(dateNaiss) between v1 and v2;
end$$
3) Augmenter d'un point les notes des stagiaires dans le module –C++-
/* calculer la moyenne */
Select avg(note)
from notation where NStagiaire=ns;
/*decision*/
Select avg(note) into @m
from notation where NStagiaire=ns;
if @m<10 then
select 'redoublant' as 'decision';
else
select 'reussi' as 'decision';
end if;
end;
end if;
end;
end if;
end$$
end$$
select count(*)
into @nbr
from stagiaire
where NFiliere = nf;
if @nbr=0 then
begin
select concat (' aucun stagiaire n est inscrit
dans la filiere ,' , nf );
delete from filiere where NFiliere = nf;
End;
else
select concat (@NBR , ' stagiaires sont
inscrits dans la filiere ,' , nf );
eND IF;
end$$
9) Procédure qui vérifie si une filière dont le code est donné en paramètre, possède des
stagiaires, affiche un message, sinon supprimer cette filière .
delimiter $$
create procedure ex9(NumF int)
begin
/*Verifier si la filiere existe */
if exists( select * from filiere where NFiliere =numF) then
begin
/*Verifier si la filiere contient des stagiaires */
if exists( select * from stagiaire where NFiliere =numF) then
Select concat( 'La filiere num : ' , numF , ' Contient des stagiaires, On ne peut
pas la supprimer') as 'Remarque';
else
Begin
Select concat( 'Aucun stagiaire n est inscrit dans La filiere num : ' , numF , ' , Elle
sera supprimée') as 'Resultat';
delete from filiere where NFiliere =NumF;
End;
end if;
end;
else
Select concat( ' La filiere num : ' , numF , ' , n existe pas ') as 'Resultat';
end if;end$$
10) Créer une table archive_filière ayant la même structure que filière.
Procédure qui vérifie si une filière dont le code est donné en paramètre, possède des
stagiaires, affiche un message,
Sinon
On archive cette filière dans la table archive_filière
Supprimer cette filière
Afficher un message de confirmation
delimiter $$
create procedure ex10(numF int)
begin
11) Afficher les informations des stagiaires qui ont plus de deux notes.(ont passé plus de 2
exams)
delimiter $$
create procedure ex11()
begin
end$$
12) Pour retourner le nombre des stagiaires inscrits dans une filière donnée.
nbrs
Nf
delimiter $$
create procedure ex12(in nf int, out nbrs int)
begin
select count(s.NStagiaire)
into nbrs
from stagiaire s
where s.NFiliere =nf;
end$$
Set @x=0 ;
Exec ex12(3,@x)
SELECT CONCAT( @x , ' stagiaires sont inscrits dans la filiere', 3 )
13) Pour retourner l’intitulé, capacité, nombre d’année d’une filière donnée.
Intitulé filiere
nf Capacité
Nbr Année
delimiter $$
create procedure ex13(in nf int, out t varchar(60) ,out cap int , out an int)
begin
Set @pk=0;
Select max(NModule) into @pkfrom module
Set @pk=@pk+1;
Insert into module values(@PK , ‘Nouveau module’, 0)
Insert into notation(@numéroNot , @NStagiaire, @NModule, @note )
delimiter $$
create procedure ex14(NNota int, NSta int, NMo int, nt int)
begin
/* Verifier si le stagiaire existe */
if exists ( select * from stagaire where NStagiaire= NSta) then
/* tester si le module numéro =NMo existe */
if exists (select * from module where Nmodule=NMo) then
insert into notation values(NNota , NSta , NMo , nt );
select 'la note a été créée avec succes';
else
/* Il faut créer le module */
set @pk =0;
select max(NModule) into @pk
from Module;
set @pk=@pk+1;
insert into module values(@pk, 'New Module' ,0);
select 'le module a été créé avec succes';
insert into notation values(NNota , NSta , @pk, nt );
select 'la note a été créée avec succes';
end if;
else
select ' ce stagiaire n existe pas ' as 'remarque';
end if;
end$$