Erreur parametrage de clause SELECT

Résolu
zen69 Messages postés 584 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 29 avril 2010 - 19 juil. 2007 à 18:18
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 - 20 juil. 2007 à 16:59
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

zen69 Messages postés 584 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 29 avril 2010 1
20 juil. 2007 à 15:10
J'ai trouver la solution a mon probleme en utilisant un EXEC
3
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
20 juil. 2007 à 15:46
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
3
zen69 Messages postés 584 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 29 avril 2010 1
20 juil. 2007 à 16:41
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
3
zen69 Messages postés 584 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 29 avril 2010 1
20 juil. 2007 à 16:42
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)
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
20 juil. 2007 à 16:59
C'est pas grave j'ai mis trop longtemps a repondre, j'ai du faire une autre activité entre temps (d'ou le retard)
0
Rejoignez-nous