3

複数のストアドプロシージャの結果を1つの一時テーブルに結合しようとしています。さまざまなストアドプロシージャの結果は、同じ列構造になっています。基本的に、さまざまなストアドプロシージャの結果をすべてUNIONしたいと思います。重要な事実:各ストアドプロシージャは、データを格納するための一時テーブルを作成し、それぞれが返す結果は、一時テーブルに対する選択に基づいています。

create proc SP1    
as
 .
 .  <snip>
 .
 select * from #tmp   -- a temporary table

select * from OPENQUERY(server, 'exec SP1')SP1の選択が一時テーブルに対して行われている場合は機能しないことに注意してください(詳細については、この質問を参照してください)。別のストアドプロシージャSP2が、SP1の実行結果を一時テーブルに取り込む別の方法はありますか?

  create proc SP2 as
  -- put results of executing SP1 into a temporary table:
  .
  .
  .

注:SP1は変更できません(たとえば、セッションスコープを持つ一時テーブルに結果を保存するため)。

4

2 に答える 2

8

ストアドプロシージャの結果に合うように一時テーブルを作成します。

あなたの臨時雇用者を想定しています。テーブルは「#MySuperTempTable」と呼ばれ、次のようにします...

INSERT INTO #MySuperTempTable (Column1, Column2)
EXEC SP1

それでうまくいくはずです。

于 2013-01-12T14:44:41.587 に答える
0
INSERT INTO #MySuperTempTable 
EXEC SP1

上記のコードスタイルに従いますが、sqlserverは命令をコンパイルしていません。

于 2013-04-10T06:21:50.800 に答える