2017-06-12 10 views
1

私は結果を返す異なるテーブルの上にループを持っています 異なる数の列を返します。クエリ出力を動的に格納するTSQL

具体的なテーブルを作成せずにクエリの出力を保存することはできますか?

私はこの単純な例を試してみましたので、私は一時テーブルに関するいくつかの記事を読んだ:

列名:上記

create table #temp_table1 (id int) 

insert into #temp_table1 ('select * from table1') 

TABLE1は、私は、次のエラーメッセージが表示されます任意のテーブル

可能性がありまたは指定された値の数がテーブル定義と一致しません。

ハードコードテーブルの定義がクエリの出力と完全に一致しないようにするにはどうしますか?

ありがとうございます!あなたがselect into行うことができ

答えて

3

- 自動的に一時テーブルを作成します。 - そう

SELECT * INTO #Temp 
FROM TableName 

問題は、動的SQLを使用しているので、あなたの一時テーブルにのみ、動的SQLの範囲内で使用可能になるということですこのような何かをやって、エラーとなります:

EXEC('SELECT * INTO #Temp FROM TableName') 

SELECT * 
FROM #Temp -- The #Temp table does not exists in this scope! 

、動的SQLを使用して、この種のものを行うには、(一度使用して行うドロップする必要がありますことを!)グローバル一時表を使用する必要があります。

EXEC('SELECT * INTO ##GlobalTempFROM TableName') 

SELECT * INTO #Temp 
FROM ##GlobalTemp -- Since this is a global temporary table you can use it in this scope 

DROP TABLE ##GlobalTemp 
関連する問題