从多个数据库中选择数据到表变量中

时间:2016-03-01 14:40:02

标签: sql-server

[使用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,如果我把它放在引号中也是如此)。

我该怎么做?任何帮助将不胜感激。

0 个答案:

没有答案