"Неверное имя объекта" при использовании глобальной временной таблицы в хранимой процедуре
Я следую несколько примеров, чтобы использовать global temp table
такие как это и это
У меня есть следующий запрос, чтобы получить данные в 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
в отличие от другого примера кода.
Что я тут не так сделал?
1 ответ
Попробуй это:
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