C'est possible? J'ai cette erreur: p> msg 1087, niveau 16, état 1, ligne 3 doit déclarer la variable de tableau
"@vtablename". P>
blockQuote> p>
6 Réponses :
Si vous essayez de choisir parmi une table de ce nom, vous pouvez faire quelque chose comme ceci:
DECLARE @vTableName varchar(50) SET @vTableName = (SELECT TableName FROM qms_Types WHERE Id = 1) EXECUTE('SELECT * FROM [' + @vTableName + ']')
Non, OP tente d'obtenir de manière dynamique des données d'une table définie par une variable. Ne pas simplement essayer de retourner la valeur de cette variable.
OP tente de définir le nom de la table, puis de sélectionner des données dans la table, pas de sélectionner le nom de la table.
Votre propre édition invalide votre réponse, car la variable @vtablename code> est pas b> une variable de table; C'est un
varchar (50) code>.
Réponse courte: non. P>
Bonne réponse: NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO. Utilisez Dynamic SQL si vous devez, mais si vous structurez vos tables d'une manière où vous ne connaissez pas le nom de la table à l'avance, cela pourrait vous permettre de repenser votre schéma. P>
Voici une excellente ressource pour apprendre à utiliser Dynamic SQL: La malédiction et les bénédictions de SQL dynamique a> p>
Je pense que vous voulez que cela:
DECLARE @vTableName table(TableName varchar(50)) insert into @vTableName SELECT TableName FROM qms_Types WHERE Id = 1 SELECT * FROM @vTableName
Cette requête renvoie mon nom de table, pas le contenu de ma table :(
Il retournera le contenu de la colonne Nom. Qu'est-ce que tu veux faire?
La seule façon dont vous pouvez le faire est via SQL dynamique qui fait référence à la pratique de la création d'un texte T-SQL et de l'exécuter à l'aide du sp_executesql code>
(ou simplement exec code>
) p>
Voici un lien utile sur Dynamic SQL La malédiction et les bénédictions de SQL dynamique . p>
Vous devriez vraiment penser s'il s'agit ou non d'une affaire de SQL dynamique ou s'il y a une autre façon pour vous d'effectuer cette opération. P>
Ma solution pour cela:
EXECUTE('SELECT * FROM ' + TableName + '')
Il semble que différentes personnes interprètent différemment l'OP différemment.
Je suis à peu près sûr que l'OP demande ce type de concept / capacité / manœuvre ... p>
"Mettez une table Nom dans une variable puis utiliser cette variable comme s'il s'agissait d'un nom de table. " p> de lecture de toutes les réponses et réponses, il apparaît que ce type de manœuvre peut" t être fait - sauf si vous utilisez SQL dynamique qui ... p> =========================================== ====================== P> Il y a Autres langues b> Où cela peut être fait ... dans littéralement, Deux lignes de code (voir (L1) et (L2) dans le code ci-dessus) et ne doivent pas avoir à faire beaucoup de formatage et d'édition.) p> (Je l'ai déjà fait avant - il y a une autre langue où Tout ce dont vous auriez besoin est L1 et L2 ...) p> =============================== ================================== P> Il est malheureux que SQL Server ne fasse pas Cela sans aller à une quantité décente d'effort ... p>
Non, ce n'est pas possible comme vous l'essayez. Vous aurez probablement des réponses à l'aide de Dynamic SQL.
duplicaté possible de Sélection d'une table où Le nom est passé comme une variable
Pourriez-vous nous en dire plus sur pourquoi vous voulez faire cela?