我正在按照几个示例使用 global temp table
,例如this&这个
我有以下查询将数据获取到global temp table
:
DECLARE @SQL NVARCHAR(MAX)
SET @SQL = N'SELECT * INTO ##tmpDraftTableData
FROM ' + @DraftTableName
EXEC sp_executesql @SQL
请注意,@DraftTableName
是动态的,来自具有不同结构的不同表,这就是为什么我需要使用 Dynamic Query 。
然后,我想将数据插入从上面的全局temp table
获得的另一个临时表以循环并处理数据:
SELECT *
INTO #tmpDraftTableData
FROM ##tmpDraftTableData -- ERROR: Invalid object name ##tmpDraftTableData
似乎我无法使用错误的全局临时表
无效对象名称## tmpdraftTabledata
与其他示例代码不同。
我在这里做错了什么?
尝试以下:
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