0

結果のテーブルを返す SQL SERVER 2008 ストアド プロシージャがある場合WHERE、ストアド プロシージャ自体を編集せずに結果テーブルに対して句を実行することは可能ですか?

4

4 に答える 4

4

直接ではありません。

出力を一時テーブルにリダイレクトします。そこから選択してフィルタリングする

CREATE TABLE #foo (...)

INSERT #foo EXEC bar @p1

SELECT * FROM @foo WHERE ...
于 2012-08-27T13:14:14.927 に答える
0

テーブル値関数を利用して、これを他の回答と組み合わせることができます...つまり、接続ローカルの一時テーブルを作成し、そのテーブルにストアドプロシージャ呼び出しの結果を入力して結果を返す TVF を作成します。 . 次に、SELECTその TVF から目的のWHERE句を適用して実行できます。

ただし、これは大規模なデータセットでは非常に遅くなる可能性があります!!

于 2012-08-27T13:20:41.597 に答える
0

#temp テーブルを作成してストアド プロシージャの結果を挿入し、そこからWHERE句を選択することをお勧めします。

于 2012-08-27T13:15:12.353 に答える
0

Openrowset は、このように機能する私の頭に浮かぶオプションです

SELECT  *
FROM    OPENROWSET ('SQLOLEDB','Server=(local);TRUSTED_CONNECTION=YES;','set fmtonly off      exec master.dbo.sp_who')
AS tbl

where句を直接適用できます。

于 2012-08-27T13:42:42.967 に答える