数据库名称为变量第2部分

时间:2015-07-08 12:20:36

标签: sql-server tsql

declare @deb  nvarchar(200)
set @deb='raw'

insert into table11
select * from @deb.dbo.table2

以上代码无效。 有没有办法将服务器名称用作变量?

2 个答案:

答案 0 :(得分:3)

您无法在SQL语句中更改列,表,架构或数据库引用。另一方面,您可以使用动态SQL:

declare @deb  nvarchar(200);
set @deb = 'raw';

declare @sql nvarchar(max);
set @sql = '
insert into table11
    select * from @deb.dbo.table2
';

set @sql  = replace(@sql, '@deb', @deb);

exec sp_executesql @sql;

答案 1 :(得分:2)

是的,使用动态SQL

declare @deb  nvarchar(200)
set @deb='raw'

declare @sql as nvarchar(max) = 'insert into table11
select * from '+@deb+'.dbo.table2'

exec (@sql)