Как я могу вставить динамический 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
Другие вопросы по тегам