私はストアドプロシージャと3つの変数を持っています。私はそれらをすべてtempテーブルの同じ行に挿入する必要があります。これは可能ですか?試しましたストアドプロシージャとその他の変数をテンポラリテーブルに挿入
INSERT INTO #Temp (@Ad, @B, @C, @SPInt)
SELECT
@Ad, @B, @C, EXEC sp_XYZ @A, @B, @C
しかし、これは動作しません。
私はストアドプロシージャと3つの変数を持っています。私はそれらをすべてtempテーブルの同じ行に挿入する必要があります。これは可能ですか?試しましたストアドプロシージャとその他の変数をテンポラリテーブルに挿入
INSERT INTO #Temp (@Ad, @B, @C, @SPInt)
SELECT
@Ad, @B, @C, EXEC sp_XYZ @A, @B, @C
しかし、これは動作しません。
この最も簡単な方法は、ストアドプロシージャを変更して入力引数を他のものと一緒に返すことです。
出力結果をどこかに保存してから#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;
どうしたのでしょう? –
いいえ1つのステートメントでこれを行うことはできません。
1つのステートメントでINSERT..EXECを実行し、UPDATEステートメントに変数を追加することができます。しかし、これを行うには、2つの異なるステートメントを使用する必要があります。
よろしくお願いいたします。それはSPがintを返すので問題になります。私はMAX(row_number)を更新することになっていると思いますが、これは実行時間を大幅に増やします:( –
'sp_XYZ'行を生成し、あなたがそれらをしたい場合、それはあなたの質問から不明です'#temp'、または単純に戻り値を取得しようとしている場合(これはもっと簡単です:' EXEC @SPInt = sp_XYZ @A、@B、@ C'の後に 'INSERT'が続きます)。 –