我需要在这样的查询中将数据库定义为变量:
insert into Database1.dbo.Table1
select * from Database2.dbo.Table1
在我的情况下,所有数据库都具有相同的架构。
我当然可以使用动态sql,但它是一种具有如下语法的方法:
insert into Database1.dbo.Table1
select * from @ChosenDatabase.dbo.Table1
由于
答案 0 :(得分:2)
你想要达到的目标是不可能的;您必须使用动态SQL:
DECLARE @SQLQuery varchar(300)
DECLARE @TableName varchar(100)
SET @TableName = ChosenDatabase.dbo.Table1
SET @SQLQuery = 'INSERT INTO Database1.dbo.Table1 SELECT * FROM ' + @TableName
EXEC(@SQLQuery);
答案 1 :(得分:2)
'Thu Feb 18 11:03:18 GMT 2016'
答案 2 :(得分:1)
尝试使用动态sql
declare @ChosenDatabase varchar(100)='dbname'
DECLARE @SQL NVARCHAR(MAX)
SET @SQL= 'select * from '+ @ChosenDatabase+'.dbo.Customer'
--SELECT @SQL
EXEC SP_EXECUTESQL @SQL