Vous êtes sur la page 1sur 3

SQL server

Procédures stockées
Soit la base de données Employessql de TP1.

1. Créer une procédure stockée affichDep qui affiche les départements.


2. Créer une procédure stockée qui compte le nombre d’employés.

3. Créer une procédure stockée insertEmp qui ajoute un employé.


4. Créer la procédure stockée m_fonct_sup qui reçoit en paramètres le nom d'un employé, et
affiche le nom, la fonction et le numéro du supérieur de ses collègues qui ont la même
fonction et le même supérieur.
Exécuter la procédure m_fonct_sup pour l’employé « Kacimi »
5. Réécrire la procédure stockée m_fonct_sup, en spécifiant les actions à accomplir si
l'utilisateur ne fournit pas de paramètre.

6. Écrire la procédure Salair_jour, qui envoie le salaire journalier de chaque employé d’un
département donné.
Faire l’appel de la procédure Salair_jour, pour le département 20.
Solution

/****************** R1 : Affiche département **********************/


create proc ps1
as
begin
select * from Dept
end
go

exec ps1
go

/******************************************************************/
/***************** R2 : Nombre d'employés *******************/

create proc ps2


as
begin
select count (*) from Emp;
end
go

exec ps2
go

/******************************************************************/
/**************** Ajouter un employé ********************/

create proc insertEmp( @num int, @nom nvarchar(60),@fonction nvarchar(100),


@n_sup int,@embauche date, @salaire float, @comm float,@n_dept int)
as begin
insert into Emp (num, nom, fonction, n_sup, embauche, salaire, comm, n_dept)
values(@num , @nom ,@fonction , @n_sup ,@embauche , @salaire , @comm ,@n_dept);
end
go

exec insertEmp 300, 'Benmoussa', 'directeur',7782, '2002-10-01',90000, 2000, 40


go

/******************************************************************/
--4.Créer la procédure stockée m_fonct_sup qui reçoit en paramètres le nom d'un employé, et
affiche le nom, la fonction et le numéro du supérieur de ses collègues qui ont la même
fonction et le même supérieur.
create proc m_fonct_sup @nom nvarchar(255)
as
begin
select nom,fonction,n_sup
from Emp
where fonction= (select fonction from Emp where nom=@nom ) and n_sup =(select n_sup from Emp
where nom=@nom )
end
go

exec m_fonct_sup 'Kacimi'


go
/*************************************************************************************/
----6. Écrire la procédure Salair_jour, qui envoie le salaire journalier de chaque employé
d’un département donné.
create proc Salair_jour @n_dept int , @sal_j real output
as
begin
select nom, round(salaire/22,2) from Emp where n_dept=@n_dept;
end
go

declare @sal_j real


execute Salair_jour 10, @sal_j output
select @sal_j

Vous aimerez peut-être aussi