2017-04-20 2 views
0

Ich habe diese dynamische Abfrage, wie kann ich das Ergebnis davon in temporäre Tabelle einfügen? Das Ergebnis dieser Abfrage zeigt (1000 row(s) affected) Aber ist eine Chance, diese 1000 Zeilen in einer temporären Tabelle auszugeben?Wie kann ich dynamische SQL in temporäre Tabelle einfügen?

So etwas:

INSERT INTO #TempTable 
EXEC(@query) 

Hier ist meine Abfrage

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; 
+0

http://stackoverflow.com/a/1228165/6167855 und die Antwort verwenden Sie vermeiden es. Für den ersten müssen Sie die Verkettung verwenden. – scsimon

+2

Wenn Sie temporäre Tabellen verwenden möchten, müssen Sie die temporäre Tabelle außerhalb des dynamischen SQL erstellen. – EMUEVIL

+0

Was würde mein 'Provider Name', wenn ich' Microsoft SQL Server 2012 (SP3) (KB3072779) haben - 11.0.6020.0 (X64) \t 20. Oktober 2015 15.36.27 \t Copyright (c) Microsoft Corporation \t Standard Edition (64-Bit) unter Windows NT 6.2 (Build 9200:) ' – Oleg

Antwort

1

ich diesen Code ausführen und es kehrte mir die Testreihen ich erstellt hatte.

declare @query nvarchar(100) 
set @query = N'select * into ##TMPTblTest from tblTest' 

exec sp_executesql @query; 

select * from ##TMPTblTest 

Sie verwenden eine globale temporäre Tabelle. Wenn Sie eine Auswahl treffen, denke ich, dass es funktioniert.

+0

Funktioniert gut! Vielen Dank – Oleg

2

Sie können die temporäre Tabelle Struktur außerhalb dynamische SQL erklären, dann nur unter globalen temporären Tabelle

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 
 
    ID 
1 0 
2 1 
3 2 
4 3 
5 4 
6 5 
7 6 
8 7 
9 8 
10 9 
11 1 
Verwandte Themen