Bonjour,

j'essaie de mettre au point une procédure stockée qui va me calculer le chiffre d'affaire réalisable pour une journée donnée, et en fonction de quelques critères de filtrage qui peuvent être actifs dans mon ihm (je peux filtrer sur un client en particulier ou bien sur une partie de son code, de même que sur un article précis ou sur ne partie de la référence).

Voici le code SQL :
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
 
USE [GPAO]
GO
/****** Objet :  StoredProcedure [dbo].[caRealisable]    Date de génération du script : 11/25/2014 10:39:46 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[caRealisable]
	-- Add the parameters for the stored procedure here
	@jour datetime,
	@client int,
	@article int,
	@filtre_client varchar(50),
	@filtre_article varchar(50)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
 
	DECLARE @rq varchar(500); 
        DECLARE @qte decimal(19,6);
	DECLARE @chiffre decimal(19,6);
 
	SET @rq = 'SELECT @qte = COALESCE(sum(ccl_qte_cde - ccl_qte_livree),0), @chiffre = COALESCE(sum((ccl_qte_cde - ccl_qte_livree) * ccl_prix),0) 
		FROM cc, clt, ccl, art 
		WHERE cc_confirme = 1 AND ccl_delai_confirme = @jour AND cc_id = ccl_cc_id AND cc_client = clt_id AND ccl_article_id = art_id';
 
	IF @client > 0
		SET @rq = @rq + ' AND clt_id = ' + @client;
	ELSE
		SET @rq = @rq + ' AND clt_code LIKE ''%' + @filtre_client + '%''';
 
	IF @article > 0
		SET @rq = @rq + ' AND art_id = ' + @article;
	ELSE
		SET @rq = @rq + ' AND art_reference LIKE ''%' + @filtre_article + '%''';
 
	EXECUTE @rq;  
 
END
Et l'erreur à l'exécution :

Msg 203, Niveau 16, État 2, Procédure caRealisable, Ligne 37
Le nom 'SELECT @qte = COALESCE(sum(ccl_qte_cde - ccl_qte_livree),0), @chiffre = COALESCE(sum((ccl_qte_cde - ccl_qte_livree) * ccl_prix),0)
FROM cc, clt, ccl, art
WHERE cc_confirme = 1 AND ccl_delai_confirme = @jour AND cc_id = ccl_cc_id AND cc_client = clt_id AND ccl_article_id = art_id AND clt_code LIKE '%%' AND art_reference LIKE '%%'' n'est pas un identificateur valide.
En exécutant ce scénario de test tout bête généré depuis SSMS:
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
 
USE [GPAO]
GO
 
DECLARE	@return_value int
 
EXEC	@return_value = [dbo].[caRealisable]
		@jour = '20141125',
		@client = 0,
		@article = 0,
		@filtre_client = '',
		@filtre_article = ''
 
SELECT	'Return Value' = @return_value
 
GO
Quelqu'un peut-il m'aider svp ?

Merci