Salut,

Pour information j'utilise une BdD avec un niveau de compatibilité 65 (au cas où ce serait utile).

J'essaye donc de faire une procédure stockée avec une variable de sortie. Cette variable de sortie est censée être un nombre décimal et je me trouve avec un entier.
Ce n'est pas littéralement pas procédure stockée mais plutôt une illustration :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
28
29
declare @j	decimal,
	@m	int,
	@a	int,
	@nbjour	int
 
declare @datedeb smalldatetime, 
	@datefin smalldatetime,
	@nbmois  decimal
set @datedeb ='02/01/2005'
set @datefin = '15/03/2006'
 
set @j = datepart(day, @datefin) - datepart(day, @datedeb)
set @m = datepart(month, @datefin) - datepart(month, @datedeb)
set @a = (datepart(year, @datefin) - datepart(year, @datedeb)) * 12
 
if exists (select 1 where datepart(month, @datefin) in (4, 6, 9, 11))
	set @nbjour = 30 
else if exists (select 1 where datepart(month, @datefin) in (3, 5, 7, 8, 10, 12))
	set @nbjour = 31
else if datepart(month, @datefin) = 2
	begin
	if datepart(year, @datefin) % 4 = 0
		set @nbjour = 29
	else
		set @nbjour = 28
	end
 
set @nbmois = cast(round(@a + @m + (@j/@nbjour), 2) as decimal)
select retour1 = @nbmois, retour2 = round(@a + @m + (@j/@nbjour), 2)
En voici le résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
retour1              retour2                          
-------------------- -------------------------------- 
14                   14.42000000000
Pouvez-vous m'expliquer pourquoi cette différence? Et éventuellement extrapoler avec mon retour de procédure stockée qui me donne aussi 14 au lieu de 14.42?

Merci par avance.