2017-05-26 6 views
2

私はストアドプロシージャと3つの変数を持っています。私はそれらをすべてtempテーブルの同じ行に挿入する必要があります。これは可能ですか?試しましたストアドプロシージャとその他の変数をテンポラリテーブルに挿入

INSERT INTO #Temp (@Ad, @B, @C, @SPInt) 
    SELECT 
     @Ad, @B, @C, EXEC sp_XYZ @A, @B, @C 

しかし、これは動作しません。

+0

'sp_XYZ'行を生成し、あなたがそれらをしたい場合、それはあなたの質問から不明です'#temp'、または単純に戻り値を取得しようとしている場合(これはもっと簡単です:' EXEC @SPInt = sp_XYZ @A、@B、@ C'の後に 'INSERT'が続きます)。 –

答えて

3

この最も簡単な方法は、ストアドプロシージャを変更して入力引数を他のものと一緒に返すことです。

出力結果をどこかに保存してから#Tempに挿入する必要があります。ここでは一つの方法である:

create table #temp_exec (. . .); 
insert into #temp_exec (. . .) 
    exec sp_xyz @A, @B, @C; 

insert into #temp (a, b, c, . . .) 
    select @A, @B, @C, . . . 
    from #temp_exec; 

#tempが空のようにして起動した場合、あなたは別のテーブルを必要としない:

insert into #temp (. . .) 
    exec sp_xyz @A, @B, @C; 

update #temp 
    set a = @A, b = @b, c = @c; 
+0

どうしたのでしょう? –

1

いいえ1つのステートメントでこれを行うことはできません。

1つのステートメントでINSERT..EXECを実行し、UPDATEステートメントに変数を追加することができます。しかし、これを行うには、2つの異なるステートメントを使用する必要があります。

+0

よろしくお願いいたします。それはSPがintを返すので問題になります。私はMAX(row_number)を更新することになっていると思いますが、これは実行時間を大幅に増やします:( –

関連する問題