我正在使用几个示例来使用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
与其他示例代码不同。
我在这里做错了什么?
答案 0 :(得分: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