declare @deb nvarchar(200)
set @deb='raw'
insert into table11
select * from @deb.dbo.table2
以上代码无效。 有没有办法将服务器名称用作变量?
答案 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)