Bonjour,

Je suis nouveau inscrit sur ce forum mais j'ai souvent trouvé des réponses sur ce forum en tant que simple visiteur.

Je demande donc un peu d'aide sur une erreur :
Msg*137, Niveau*15, État*2, Ligne*1
Must declare the scalar variable "@gam".
Je ne comprend pas du tout d'où cela vient, j'ai trouvé sur des forums pleins de "fouillis" à ce sujet mais rien de concret.

Je vous joint mon code entier. Il s'agit d'une procédure stockée, qui va me servir a rechercher dans la base en filtrant mes recherches.

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
USE [BKM]
GO
/****** Object:  StoredProcedure [dbo].[lit_resultat]    Script Date: 10/31/2013 08:36:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
 
 
ALTER PROCEDURE [dbo].[lit_resultat]
	-- Add the parameters for the stored procedure here
	@gam varchar(25),
	@nof varchar(10),
	@date1 datetime, 
	@date2 datetime
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
 
    -- Insert statements for procedure here
 
DECLARE @ch varchar(255)
 
set @ch = 'SELECT * FROM resultat WHERE '
-- IF GAMME
if @gam != ''
	set @ch = @ch + 'Gamme=@gam and '
else 
	set @ch = @ch
 
-- IF NUM OF
if @nof != ''
	set @ch = @ch + 'Num_OF=@nof and '
else 
	set @ch = @ch
 
-- IF DATE
if @date1 != '' and @date2 != ''
	set @ch = @ch + 'Date Between @date1 and @date2 and '
else
	set @ch = @ch
 
 
set @ch = SUBSTRING(@ch, 1, LEN(@ch) - 4)	
SELECT @ch -- juste ici pour le test
 
EXEC (@ch)
-- SELECT * FROM RESULTAT WHERE Gamme=@gam and Num_OF=@nof and Date Between @date1 and @date2
END
Je lance une requête EXEC pour tester la procédure et l'erreur m'est retournée a chaque fois.

Exemple :
Si ma requête est : EXEC lit_resultat '257939-02', '', '', ''
L'erreur sera Must declare the scalar variable "@gam".

Et si ma requête est : EXEC lit_resultat '', '5000', '', ''
L'erreur sera Must declare the scalar variable "@nof".

J'espère vous avoir fourni le maximum d'éléments, je m'en remet à vous.
Merci de votre aide.



M4itreG.