IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Des variables comme nom de colonnes


Sujet :

Développement SQL Server

  1. #1
    Membre régulier Avatar de Chacha35
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 264
    Points : 114
    Points
    114
    Par défaut Des variables comme nom de colonnes
    Bonjour,

    Je voudrais pouvoir donner des noms à mes colonnes en fonction d'un parametre de ma procédure stockée : la langue.

    Voici ce que j'ai fais, mais il y a une erreur au niveau du select :
    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
     
    ALTER PROCEDURE [dbo].[Consult_SearchAvecRefClt] (@RefCltContient varchar(50),@Env varchar(50),@Langue varchar(50))
    AS 
    DECLARE @Col1 varchar(30),@Col2 varchar(30)
    IF @Langue = 'en-US'
    BEGIN
    SET @Col1 = 'Cust. Item'
    SET @Col2 = 'Item'
    END
    ELSE
    BEGIN
    SET @Col1 = 'Ref Clt'
    SET @Col2 = 'Ref Interne'
    END
     
    //Incorrect syntax near '@Col1'.
    SELECT DISTINCT AKARTK as @Col1,AKARTN as @Col2,ITDSC as 'Desc'
    FROM ARKF_ACTIF 
    INNER JOIN ITEMASA ON ARKF_ACTIF.AKARTN = ITEMASA.ITNBR 
    WHERE AKARTK LIKE '%' + @RefCltContient + '%' 
    AND ARKF_ACTIF.ENV_CD = @Env
    Merci d'avance

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Vous confondez ce que sont les variables et les colonnes, c'est pour cela que ça ne fonctionne pas, comme vous l'avez écrit :

    Ce qui aurait du s'écrire :

    Le nom des colonnes permet de décrire un ensemble de valeurs, donc ce n'est pas une valeur.

    Je vous déconseille de plus d'utiliser les mots-clé du langage SQL pour identifier vos colonnes : DESC indique un tri dans l'ordre décroissant des valeurs de la colonne qui le précède.

    Pour faire ce que vous souhaitez faire, vous devez écrire :

    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
    ALTER PROCEDURE [dbo].[Consult_SearchAvecRefClt]
    	@RefCltContient VARCHAR(50),
    	@Env VARCHAR(50),
    	@Langue VARCHAR(50)
    AS 
    BEGIN
    	DECLARE @Col1 VARCHAR(30),
    			@Col2 VARCHAR(30)
     
    	SELECT @Col1 = CASE @Langue
    						WHEN 'en-US' THEN 'Cust. Item'
    						ELSE 'Item'
    					END,
    			@Col2 = CASE @Langue
    						WHEN 'en-US' THEN 'Ref Clt'
    						ELSE 'Ref Interne'
    					END
     
    	DECLARE @SQL NVARCHAR(256)
    	SET @SQL = N'SELECT DISTINCT AKARTK AS ' + @Col1 + ', ' +
    				'AKARTN AS ' + @Col2 + ', ' +
    				'ITDSC AS [Desc]' +
    				' FROM dbo.ARKF_ACTIF AS AA' +
    				' INNER JOIN dbo.ITEMASA AS I ON AA.AKARTN = I.ITNBR' +
    				' WHERE AA LIKE ''%'' + @RefCltContient + ''%''' +
    				' AND AA.ENV_CD = ''' + @Env + ''''
     
    	EXEC dbo.sp_executeSQL @SQL	
    END
    Mais vous devriez plutôt écrire deux vues et requêter l'une ou l'autre suivant la langue que vous recevez en paramètre ...

    @++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/06/2014, 17h43
  2. utilisation d'une variable comme nom de colonne
    Par argonath dans le forum Développement
    Réponses: 11
    Dernier message: 13/08/2010, 14h43
  3. Utiliser une variable comme nom de fichier
    Par lo00_ dans le forum MATLAB
    Réponses: 1
    Dernier message: 28/06/2006, 13h57
  4. donner la valeur d'une variable comme nom de table
    Par cladsam dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 14/10/2005, 15h16
  5. [curseurs] utiliser une variable comme nom de champ
    Par Christian31 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/09/2005, 14h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo