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