複数のテーブル結果を返す別のストアド プロシージャ (sp2) 内でストアド プロシージャ (sp1) を呼び出すことはできますか?
実行されたストアド プロシージャ (sp2) で返された結果を使用する必要があります。
私の知る限り、これは不可能です。でも確かめたい。
この種の要件を達成するための代替手段はありますか?
複数のテーブル結果を返す別のストアド プロシージャ (sp2) 内でストアド プロシージャ (sp1) を呼び出すことはできますか?
実行されたストアド プロシージャ (sp2) で返された結果を使用する必要があります。
私の知る限り、これは不可能です。でも確かめたい。
この種の要件を達成するための代替手段はありますか?
1 つの結果セットINSERT INTO <table> EXEC <sp>
に使用できます。
しかし、それは複数の結果セットでは機能しません。
そして、それをネストすることはできません。 (SP2 は SP1 を呼び出すときに使用できます。ただし、SP3 は SP2 を呼び出すと同じことはできません。)
正直なところ、返す結果セットが複数ある場合は、結果をテーブルに挿入する必要があります。その後、外側の SP はそれらのテーブルを使用できます。
外側の SP が一時テーブル ( CREATE TABLE #temp
) を作成すると、内側の SP はそれが挿入されていることを確認できます。
同様に、永続的なテーブルを使用することもできます。SPID という列を作成し、挿入する値として @@spid を使用することをお勧めします。 (@@spid は、各セッションを一意に識別します。) ただし、テーブルに挿入した後は、忘れずにクリーンアップする必要があります。
これらのオプションはすべて、両方の SP を変更できることを前提としています。できない場合は、SQL Server 内でこれを実行できるかどうかわかりません。
このために、SP2 内に一時テーブルを作成し、それを SP1 で使用できます。