1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| /*6) Faire une SP qui retourne dans un Recordset (par SELECT) le prix d'une prime d'assurance pour un client dont le Pk
est passé en paramètre. Le calcul se fait comme suit:
Prix de base 10$.
Pour les hommes ajoutez 3.50$, pour les femmes enlevez 2.50$.
Pour les plus de 30 ans, ajoutez $3, pour les plus de 50 ans, ajoutez 10%.*/
--création de la procédure
create procedure dbo.spGetPrixPrimeFromPk
@PkClient int,
@Prix decimal(6,1) output
as
set @Prix= (select sexe,DateNaissance,
case
when Sexe ='M' and DATEDIFF(year,DateNaissance,GETDATE())<30 then 10+3.5
when Sexe='M' and DATEDIFF(year,DateNaissance,GETDATE())>30 and DATEDIFF(year,DateNaissance,GETDATE())<50 then 10+3.5+3
when Sexe='M' and DATEDIFF(year,DateNaissance,GETDATE())>50 then ((10+3.5)*0.1)+(10+3.5)
when Sexe ='F' and DATEDIFF(year,DateNaissance,GETDATE())<30 then 10-2.5
when Sexe='F' and DATEDIFF(year,DateNaissance,GETDATE())>30 and DATEDIFF(year,DateNaissance,GETDATE())<50 then 10-2.5+3
when Sexe='F' and DATEDIFF(year,DateNaissance,GETDATE())>50 then ((10-2.5)*0.1)+(10-2.5)
end as PrixPrime
from Clients
where PkClient=@PkClient)
go
--test procédure
declare @PrixPrime decimal(6,2)
exec dbo.spGetPrixPrimeFromPk 1,@PrixPrime output
print 'Le prix de la prime est: '+@PrixPrime |
Partager