[使用SQL-Server]我的情况是需要从多个数据库中选择数据到表变量中以便以后处理。它看起来有点像这样:
DECLARE @ids TABLE(idx INT IDENTITY(1,1), dbname VARCHAR(10))
INSERT @ids VALUES ('db1'), ('db2'), ('db3'), ..., ('dbn')
DECLARE @MyTable TABLE (
dbname VARCHAR(100),
column1 VARCHAR(100),
column2 VARCHAR(100),
...
columnn VARCHAR(100)
)
SELECT @i = MIN(idx) - 1, @cnt = MAX(idx) FROM @ids
WHILE @i < @cnt
BEGIN
SELECT @i = @i + 1
SELECT @dbname=dbname FROM @ids WHERE idx = @i
--here my trouble starts
INSERT INTO @MyTable
SELECT @dbname, column1, column2, ..., columnn
FROM [@MyDB].[dbo].[SomeTable]
...
END
最终的select语句应该将@MyDB中的数据库中的数据(包括@dbname中的数据库名称)插入到@MyTable中保存的表中。以上不起作用,我也尝试过:
SET MyQuery = 'INSERT INTO @MyTable
SELECT ''' + @dbname + ''', column1, column2, ..., columnn
FROM [' + @MyDB + '].[dbo].[SomeTable]'
EXEC sp_executesql @MyQuery
但也失败了(它不喜欢那里的@MyTable,如果我把它放在引号中也是如此)。
我该怎么做?任何帮助将不胜感激。