SQL Server 2008 SELECT*FROM @variable?

soa*_*ing 8 variables sql-server-2008

有可能的?

DECLARE @vTableName varchar(50)

SET @vTableName = (SELECT TableName FROM qms_Types WHERE Id = 1)

SELECT * FROM @vTableName
Run Code Online (Sandbox Code Playgroud)

我有这个错误:

消息1087,级别16,状态1,行3必须声明表变量"@vTableName".

Jas*_*son 17

简答:不.

答案很长:Noooooooooooooooooooooooooooooooooooooo.如果必须,请使用动态SQL,但如果您以不知道表名的方式构建表,则重新考虑模式可能会使您受益.

这是学习如何使用动态SQL的一个很好的资源:动态SQL 的诅咒和祝福


Hea*_*ore 5

如果您尝试从该名称的表中进行选择,那么您可以执行以下操作:

DECLARE @vTableName varchar(50) 
SET @vTableName = (SELECT TableName FROM qms_Types WHERE Id = 1) 
EXECUTE('SELECT * FROM [' + @vTableName + ']')
Run Code Online (Sandbox Code Playgroud)