2

SELECT ステートメントを使用して 2 つのテーブル T1 と T2 を返すストアド プロシージャ SP1 があります。別のストアド プロシージャ SP2 で T2 に対して何らかの操作を実行したいと考えています。誰かが私にそれを行う方法を教えてもらえますか?

4

1 に答える 1

2

オプション1

SELECT を使用して T2 を返すだけでなく、T2 をテーブルに保存するように SP1 を変更します。次に、そのテーブルを SP2 の入力として使用します。

オプション 2

SP1 を変更できない場合は、ストアド プロシージャの出力をテーブルでキャッチできます。OPENROWSET を使用するか、事前に一時テーブルを定義してそれを行う方法については、StackOverflow に関するこの質問を確認してください: How to SELECT * INTO [temp table] FROM [stored procedure]

T1 と T2 の定義が同じでない場合、このオプションは機能しません。定義が同じであれば、次のように両方の結果セットを1 つのテーブルにインポートできます。

--create a temporary table with the same definition as T1 and T2
CREATE TABLE #temp (
    Col1 SOME DATATYPE,
    Col2 SOME DATATYPE
);

--fill your temp table with the result sets of T1 and T2
INSERT INTO #temp
EXEC [dbo].[SP1];

ただし、T2 の代わりに T1-plus-T2 テーブルを処理する必要があります。

したがって、オプション 1 が最善の策のようです。

于 2012-08-22T08:48:50.867 に答える