0

我正在遵循几个示例,global temp table例如this & this

我有以下查询将数据放入global temp table

DECLARE @SQL NVARCHAR(MAX)

SET @SQL = N'SELECT * INTO ##tmpDraftTableData  
             FROM ' + @DraftTableName 

EXEC sp_executesql @SQL

请注意,它@DraftTableName是动态的,来自具有不同结构的不同表,这就是我需要使用动态查询的原因。

然后我想将从上面全局获取的数据插入temp table到另一个临时表中以循环和处理数据:

SELECT *
INTO #tmpDraftTableData
FROM ##tmpDraftTableData  -- ERROR: Invalid object name ##tmpDraftTableData

好像我不能使用带有错误的全局临时表

对象名称无效##tmpDraftTableData

与其他示例代码不同。

我在这里做错了什么?

4

1 回答 1

0

尝试这个:

CREATE TABLE ##tmpDraftTableData (ID INT)
INSERT INTO ##tmpDraftTableData VALUES(1)
INSERT INTO ##tmpDraftTableData VALUES(2)
INSERT INTO ##tmpDraftTableData VALUES(3)

DECLARE @SQL NVARCHAR(MAX), @DraftTableName VARCHAR(100)='##tmpDraftTableData'

SET @SQL = N'SELECT * 
            INTO #tmpDraftTableData  
             FROM ' + @DraftTableName +'

             SELECT * FROM #tmpDraftTableData
             '

您可以直接执行查询,而不是使用sp_executesql.

PRINT (@SQL)
EXEC (@SQL)

输出:

ID
1
2
3
于 2018-03-27T08:07:02.627 回答