在表格中插入变量

时间:2017-05-17 19:37:47

标签: sql-server sql-server-2016

我宣布了一个变量

DECLARE @DB varchar(99)='Table2017'

我正在尝试在数据库对象的连接中使用此变量:

Join @DB.dbo.Table3 U on A.ID = U.AccountID

使用'+ @DB +'.dbo.Table3语法不正确以及'@DB'.dbo.Table3'+@DB+'.dbo.Table3。关于如何在保持@DB引用为varchar的同时做到这一点的任何想法?

3 个答案:

答案 0 :(得分:1)

您不能将参数用作对象名称。您需要创建所有代码动态并执行它。

例如:

declare @sqlt nvarchar(max)
DECLARE @DB varchar(99)='Table2017'

set @sqlt = 'select * from ' + @DB + '.dbo.Table3 U left join U on A.ID = U.AccountID'
exec sp_executesql @sqlt

答案 1 :(得分:1)

使用sp_executesql作为下一个演示: -

DECLARE 
    @FirstTable varchar(99)='Table1', 
    @SecondTable varchar(99)='Table2',

    @MyQuery nvarchar(200) =
    'SELECT column_name(s)
    FROM ' + @FirstTable + '
    INNER JOIN ' + @SecondTable + 
    ' ON '+ @FirstTable +'.column_name = '+ @SecondTable +'.column_name'

exec sp_executesql @MyQuery 

答案 2 :(得分:0)

你需要使用动态sql,如下所示:

declare @query varchar(max)
declare @DB varchar(99)='Table2017'

select @query = ' select * from ' +  @DB + '.dbo.Table3'
exec sp_executesql @query