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 :
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.Msg*137, Niveau*15, État*2, Ligne*1
Must declare the scalar variable "@gam".
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.
Je lance une requête EXEC pour tester la procédure et l'erreur m'est retournée a chaque fois.
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
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.
Partager