SQL Server 2008 SELECT * FROM @variable?
Ist es möglich?
DECLARE @vTableName varchar(50)
SET @vTableName = (SELECT TableName FROM qms_Types WHERE Id = 1)
SELECT * FROM @vTableName
Habe ich diese Fehlermeldung:
Msg 1087, Ebene 16, Status 1, Zeile 3 deklariert sein Muss die table-variable
"@vTableName".
- Nein, es ist nicht möglich, da Sie versuchen es. Dann werden Sie wahrscheinlich einige Antworten mit dynamischen sql.
- möglich, Duplikat der Auswahl aus einer Tabelle, wo der name als variable weitergegeben wird
- Könnten Sie uns mehr darüber erzählen, warum Sie dies tun wollen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kurze Antwort: Nein.
Lange Antwort: Noooooooooooooooooooooooooooooooooooooo. Dynamisches SQL verwenden, wenn Sie müssen, aber wenn Sie die Gestaltung Ihrer Tabellen in einer Weise, wo Sie nicht wissen, den Namen der Tabelle vor der Zeit, es kann Ihnen zugute kommen, zu überdenken, Ihre schema.
Hier ist eine großartige Ressource für das lernen, wie man dynamisches SQL verwenden: Der Fluch und Segen von Dynamischem SQL
wenn Sie versuchen, wählen Sie aus einer Tabelle dieses namens, dann können Sie etwas wie das hier tun:
@vTableName
ist nicht eine table-variable; es ist einvarchar(50)
.meine Lösung dazu:
Scheint es, als ob verschiedene Leute sind, die Interpretation der OP anders.
Ich bin ziemlich sicher, die OP ist zu Fragen, für diese Art von Konzept /Fähigkeit /manövrieren...
"Setzen Sie den Namen einer Tabelle in einer Variablen zu, und verwenden Sie dann die variable als handele es sich um eine table-name".
Aus der Lektüre alle Antworten, und Antworten, es scheint, dass diese Art von Manöver nicht gemacht werden können - es sei denn, - Sie dynamisches SQL verwenden, die...
================================================================
Gibt es in anderen Sprachen, in denen dies getan werden kann... im wahrsten Sinne des Wortes, zwei Zeilen code (siehe (L1) und (L2) im obigen code) und nicht zu tun, eine Menge von Formatierung und Bearbeitung.)
(Ich habe es getan, bevor es gibt eine andere Sprache, wo alles, was Sie brauchen, ist L1 und L2,...)
================================================================
Es ist bedauerlich, dass der SQL-Server wird dies nicht tun, ohne auf einen angemessenen Betrag von Bemühung...
Ich denke, Sie wollen diese:
Der einzige Weg, können Sie dies tun, ist durch die Dynamische SQL-bezieht sich auf die Praxis der Erstellung eines T-SQL-text und Ausführung mit der
sp_executesql
(oder einfachexec
)Hier ist ein nützlicher link über dynamische sql -Der Fluch und Segen von Dynamischem SQL.
Sollten Sie wirklich überlegen, ob oder nicht, das ist ein Fall für dynamische sql-oder wenn es einen anderen Weg für Sie, um diesen Vorgang auszuführen.