Bonjour à tous

j'ai une procédure T-SQL dont le but est de récupérer le nombre de mois entre deux dates.
Quand je l'exécute en passant comme paramètre 0,0 alors j'ai une valeur null. ce qui es normal. cependant quand je passe en paramètre des valeurs existantes dans la base alors j' ai comme message :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
The command(s) completed successfully.
voici ma procédure
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
30
31
 
CREATE PROC DBO.PS_SEL_VerifNVeauAncienConjoint
 
@code Numeric(9,0), -- code adhérent
@code1 Numeric(9,0) -- code conjoint
 
AS
 
DECLARE @Nbre  Numeric(9,0)
IF NOT EXISTS (SELECT * FROM TB_Beneficiaire  WHERE (IdBen = @code1) ) --un nouveau conjoint
 
BEGIN
	IF  EXISTS(SELECT *  FROM   TB_Beneficiaire INNER JOIN   TB_SortirAssurance ON TB_Beneficiaire.IdBen = TB_SortirAssurance.IdBen WHERE   (TB_Beneficiaire.IdCatBen = 6) AND (TB_Beneficiaire.IdAdhBen = @code))
	BEGIN
		SET @Nbre  =(SELECT   TOP 1  (DATEDIFF(Month, TB_SortirAssurance.DatSortAss, GETDATE()))  
		 FROM  TB_Beneficiaire INNER JOIN  TB_SortirAssurance ON TB_Beneficiaire.IdBen = TB_SortirAssurance.IdBen
		WHERE     (TB_Beneficiaire.IdCatBen = 6) AND (TB_Beneficiaire.IdAdhBen = @code) ORDER BY TB_SortirAssurance.DatSortAss, TB_Beneficiaire.IdBen DESC)
		SET @Nbre =null
	END
 
	ELSE
 
	BEGIN
		SET @Nbre =null
	END
 
	SELECT  @Nbre  AS Nbre 
 
END
 
GO
exple d'exécution

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
execute PS_SEL_VerifNVeauAncienConjoint 35,35
je ne comprend rien. et ceci fait que mon code hôte en visual basic m'indique que mon recordset est fermer.

quelqu'un peut il m'aider a mieux comprendre ce phénomène ?

merci d'avance.