Rechercher : dans
Par :

Valeur de variable transact SQL

Dernière réponse le 7 fév 2002 à 13:18:29 Scabo, le 6 fév 2002 à 17:58:09 
 Signaler ce message aux modérateurs

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 ???

Meilleures réponses pour « valeur de variable transact SQL » dans :
[Shell] Tester une variable numérique VoirTester une variable numérique    Préambule Dans un environnement "shell", les variables sont, par défaut, de type "chaîne de caractères". De ce fait il n'est pas possible de déclarer une variable de type "entier" (enfin, ceci n'est pas tout à...
PHP - Les opérateurs VoirQu'est-ce qu'un opérateur? Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer des opérations, les évaluer, ... On distingue plusieurs types d'opérateurs : les opérateurs de calcul les opérateurs...
SQL - Contraintes d'intégrité VoirExpression de contraintes d'intégrité Une contrainte d'intégrité est une clause permettant de contraindre la modification de tables, faite par l'intermédiaire de requêtes d'utilisateurs, afin que les données saisies dans la base soient...
Oracle - Les séquences VoirCet article s'appuie sur la version 8.1.6 d'Oracle. Une séquence est un objet de base de données Oracle, au même titre qu'une table, une vue, etc... Autrement dit, il appartient à un utilisateur, on peut le manipuler, le modifier, à condition...

1

sebsauvage, le 6 fév 2002 à 18:36:22

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 :-)

Répondre à sebsauvage

2

Scabo, le 7 fév 2002 à 11:38:46

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 !!!!

Répondre à Scabo

3

 sebsauvage, le 7 fév 2002 à 13:18:29
  • +2

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...

Répondre à sebsauvage
Collection CommentÇaMarche.net