Как я могу вставить динамический SQL в временную таблицу?
У меня есть этот динамический запрос, как я могу вставить его результат во временную таблицу? Результат этого запроса отображает (1000 row(s) affected)
Но есть ли шанс выбросить эти 1000 строк во временную таблицу?
Что-то вроде того:
INSERT INTO #TempTable
EXEC(@query)
Вот мой запрос
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
SET @cols = STUFF((SELECT ',' + QUOTENAME(c.locationCode)
FROM Catalytic_vw_LocationCodeByLine c WHERE c.linename ='wind' order by c.CompanyName, c.LocationCode
FOR XML PATH('')),1,1,'')
set @query =
'select * into ##Temp
from
(SELECT QUOTEGUID as qguid, ' + @cols + ' from
(
select
QuoteGUID,
LocationCode,
LineName,
LineGUID
from Catalytic_vw_PolicyLocationCode
) x
pivot
(
max(locationCode)
for locationCode in (' + @cols + ')
)p)x'
EXEC sp_executesql @query;
2 ответа
Решение
Я запускаю этот код, и он возвращает мне тестовые строки, которые я создал.
declare @query nvarchar(100)
set @query = N'select * into ##TMPTblTest from tblTest'
exec sp_executesql @query;
select * from ##TMPTblTest
Вы используете глобальную временную таблицу. Если вы сделаете выбор, я думаю, что это сработает.
Вы можете объявить структуру временной таблицы вне динамического sql, тогда вы избегаете использовать глобальную временную таблицу
if object_id('tempdb..#t1') is not null drop table #t1
create table #t1(ID int)
declare @s varchar(max)
set @s='insert into #t1(ID)select number from master.dbo.spt_values where type=''P'' and number<10'
exec(@s)
insert into #t1(id)
exec('Select 1')
select * from #t1
Я БЫ 1 0 2 1 3 2 4 3 5 4 6 5 7 6 8 7 9 8 10 9 11 1