Erreur SQL que je ne solutionne pas
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 :
Citation:
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:
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 :
Citation:
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.