这可能是一个简单的问题,如果没有明确表达,我很抱歉。如果我能更清楚地说出来......我可能能够在网上找到答案。
我想要做的是,能够在我的SQL顶部只写一次表名,让系统通过我的其余SQL来传递它。我基本上是用像mindate那样的个人值来做这件事,但不能让它适用于整个表格。
这有效:
Use DB
declare @mindate int
select @mindate = min(dateid) from dbo.Mytable
print @mindate
这不起作用(显然)
Use DB
set dbo.Mytable = TB
declare @mindate int
select @mindate = min(dateid) from TB
print @mindate
我尝试过不同的东西,但他们甚至不值得张贴这个问题。我不能自己解决这个问题。
答案 0 :(得分:1)
不幸的是,如果查询是静态的,则表名和列名是静态的。
对于动态SQL,您需要动态构建整个查询并使用sp_executesql
来执行它。
pros and cons of dynamic sql上有关using dynamic sql found here.
的更多信息的一些信息一个非常基本的例子:
DECLARE @fullsqlcommand varchar(1000)
SET @fullsqlcommand = 'SELECT * from yourtable'
EXEC(@sqlCommand)
这些是有用的stackexchange问题,我从其中一个得到了我的答案示例: