5

レポートで使用する 2 つの選択を返すストアド プロシージャがあります。最初の選択は表形式で表示するデータで、2 番目は以下に示すようにレポート ヘッドに表示するメタデータです。

CREATE PROCEDURE dbo. GetReport    
@Input INT
AS 
BEGIN          
   --Get #Metadata    
   -- #Results = f(#Metadata) … compex calculation          
   SELECT * FROM #Results    
   SELECT * FROM #Metadata    
END

sproc 計算は非常に集中的なので、主に使用されるいくつかの sproc パラメーターについて、レポート行をプレーン データ (PrecalcResults と PrecalcMetadata の 2 つのテーブル) として準備したいと思います。事前に計算された値を直接選択するか、パラメーターに従って sproc で計算します。

メンテナンス上の理由から、同じ sproc を使用して次のようなデータを計算したいと考えています。

単一の選択 sproc を使用する場合は、ここで説明するアプローチを使用します: ストアド プロシージャの結果を一時テーブルに挿入する

私は複数選択の sproc を持っているので、上記のようなことをしたいと思いますが、2 つのテーブルを使用します。.net では DataSet.Tables[0] と DataSet.Tables[1]... を実行しますが、tsql で実行して日常業務で実行したいと考えています。

これはMS SQLでも可能ですか?


以下の回答から、私はあまり明確ではなかったことがわかります。この機能を純粋な TSQL として実装したいと思います。

4

1 に答える 1

2

はい、可能です。

あなたが提案したように、単一のストアドプロシージャから複数の結果セットを返すことはまったく問題ありません。

唯一の潜在的な問題はTableAdapter、ストアド プロシージャから両方の結果セットを取得できるという制限ですが、その問題には非常に簡単な回避策があります。

于 2012-04-12T19:49:45.660 に答える