Erreur parametrage de clause SELECT

Résolu
Signaler
Messages postés
584
Date d'inscription
jeudi 28 décembre 2006
Statut
Membre
Dernière intervention
29 avril 2010
-
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
-
Bonjours à tous!

J'ai un problem ici avec une Proc Stockée que je suis en train de construire.
<hr size="2" width="100%" />WHILE (@loop <= @i)
    BEGIN
        SET @fld_list = @fld_list + (SELECT TOP @loop F FROM (
            SELECT TOP @i REPLACE(REPLACE(REPLACE(TABLE_NAME,'ut_RptRetailSaleSCumulQte','A'),'ut_RptRetailSaleSCumulProfit','B'),'ut_RptRetailSaleSCumulSales','C') + '.' + COLUMN_NAME + ',' AS F
            FROM information_schema.columns
            WHERE TABLE_NAME IN ('ut_RptRetailSaleSCumulQte', 'ut_RptRetailSaleSCumulProfit', 'ut_RptRetailSaleSCumulSales')
            AND COLUMN_NAME<>'Style'
            ORDER BY F DESC
            ) t2 ORDER BY F ASC)
        SET @loop = @loop + 1
        print(@fld_list)
    END
<hr size="2" width="100%" />Elle me retourne les erreur suivante :
Msg 102, Level 15, State 1, Procedure sp_RptRetailSalesCumul, Line 61
Incorrect syntax near '@loop'.
Msg 102, Level 15, State 1, Procedure sp_RptRetailSalesCumul, Line 62
Incorrect syntax near '@i'.

Quelqu'un sait comment regler ce probleme?

5 réponses

Messages postés
584
Date d'inscription
jeudi 28 décembre 2006
Statut
Membre
Dernière intervention
29 avril 2010
1
J'ai trouver la solution a mon probleme en utilisant un EXEC
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
37
Salut

Le problème est simple la solution l'est moins.

@loop est une variable

Et elle n'est pas interprétée dans ta requete

Exemple

DECLARE @fld_list nvarchar(10)
DECLARE @top int

SET @TOP = 5
 
execute('SELECT TOP '+ @TOP +' champ FROM matable')

Fonctionne car la variable est interprétée.

Ce qui est difficile c'est trouver une solution ou un détournement à ton problème.

Si tu expliques un peu le but de ta requete, je pourrais peut etre trouvée une solution
Messages postés
584
Date d'inscription
jeudi 28 décembre 2006
Statut
Membre
Dernière intervention
29 avril 2010
1
Salut [auteurdetail.aspx?ID=84425 nhervagault]!

Merci d'avoir essayer de m'aider mais j'ai deja trouver la solution ... En effet le probleme etait que je mes variables n'etaient pas interpreter et je devais effectivement utilisé un exec.

Le probleme que j'avais etait que je ne trouvait pas exactement comment gérer les ' (single quote) mais j'ai fini par trouver.

Merci encore une fois d'avoir tenter de m'aider.

zen-O-matic
Messages postés
584
Date d'inscription
jeudi 28 décembre 2006
Statut
Membre
Dernière intervention
29 avril 2010
1
btw.. si ca peux aider quelqu'un voici mon code:

SELECT @select = 'SELECT TOP 1 F INTO ##fld_list FROM (SELECT TOP 1 F FROM (
            SELECT TOP ' + convert(varchar(3),@loop) + ' COLUMN_NAME + ' + ''',''' + ' AS F
            FROM information_schema.columns
            WHERE TABLE_NAME IN (' + '''ut_RptRetailSalesCumulQte''' + ', ' + '''ut_RptRetailSalesCumulProfit''' + ', ' + '''ut_RptRetailSalesCumulSales''' + ')
            AND COLUMN_NAME<>' + '''Style''' + '
            ORDER BY F ASC
            ) t2 ORDER BY F DESC) t3 ORDER BY F ASC'
        EXEC (@select)
        SELECT @fld_list = @fld_list + (SELECT F FROM ##fld_list)
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
37
C'est pas grave j'ai mis trop longtemps a repondre, j'ai du faire une autre activité entre temps (d'ou le retard)