Création
d'entreprise
Posez votre question Signaler

Valeur de variable transact SQL

Scabo - Dernière réponse le 16 juin 2011 à 00:58
J'ai besoin d'utiliser la valeur d'une variable dans un SELECT en Transact SQL.

Par exemple:

SET @variable = 'Identifiant'
SELECT [valeur(@variable)] FROM CLIENTS

En clair, je voudrais retourner l'Identifiant des clients, mais sans écrire ma requête en dur.

Un peu comme le eval du php (ou evaluate je ne sais plus)


C'est possible ???
Lire la suite 

Valeur de variable transact SQL »

5 réponses
Réponse
+3
moins plus
Ok c'est normal :
Quand tu fais un EXEC, tu es dans un autre environnement d'exécution. Dans ce nouvel environnement, la variable @BRACT n'a jamais été déclarée, ça provoque donc une erreur.


La solution, c'est une table temporaire avec un INSERT...EXECUTE:

DECLARE @BRACT varchar(1)
SET @BRACT = 'N'
CREATE TABLE #TMP (c varchar(1))
INSERT INTO #TMP EXEC ('SELECT blabla FROM Entreprises_Af')
SELECT TOP 1 @BRACT = c from #TMP
PRINT @BRACT
DROP TABLE #TMP

ça n'est pas très élégant, mais je ne vois pas d'autres solution...
Ajouter un commentaire
Réponse
+0
moins plus
Tu peux pouvoir retourner une colonne dont le nom est stocké dans @variable, c'est ça ?

DECLARE @requete nvarchar(4000)
SET @variable = 'Identifiant'
SET @requete = 'SELECT '+@variable+' FROM CLIENTS'
EXEC(@requete)

ça devrait passer :-)
Scabo - 7 févr. 2002 à 11:38
Merci :)
Mais en fait, je me suis mal expliquée, et c'est plus compliqué que cela.
Voici ce que je veux faire :

DECLARE @variable varchar(15), @requete varchar(255)
SET @variable = '@BRACT'

DECLARE @BRACT varchar(1)
SET @BRACT = 'N'

SET @requete = 'SELECT ' + @variable + ' FROM Entreprises_Af '
PRINT @requete

EXEC(@requete)


Mais ça ne marche pas !!!! Voilà ce que cela me donne :

'La variable '@BRACT' doit être déclarée.'
Mais elle est déclarée !!!!
Floppeur - 26 août 2010 à 09:51
Non, comme dit au dessus ta variable n'est pas déclarée dans l'environnement de l'EXEC. Il faut donc déclarée ta variable dans ton exec ou travailler avec une table temporaire #Table.
Vinz95 - 16 juin 2011 à 00:58
Ou sinon tu places :
DECLARE @BRACT varchar(1)
SET @BRACT = 'N'
avant de faire appel à ta variable... Parce que sinon, elle n'est pas déclarée...
Ajouter un commentaire
Ce document intitulé « valeur de variable transact SQL » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?