2013-06-04 29 views

答えて

4

これを解決するにはいくつかの方法があります。最も簡単なのは、ストアドプロシージャを変更して結果セットを直接フィルタリングできるようにすることですが、何らかの理由でこれを行うことができないと仮定しています。

DECLARE @tablevar table(col1,.. 
INSERT INTO @tablevar(col1,..) exec MyStoredProc 'param1', 'param2' 

SELECT col1, col2 FROM @tablevar WHERE col1 = 'abc' 

EDIT:

旧:あなたはサブクエリを編集することができた場合は、次に行う必要がありますどのような

はそうのようなテーブル/一時テーブルにストアドプロシージャの結果を格納していますストアドプロシージャ: ... WHERE のCol1 = @のparam1と Col2に= @

PARAM2たMyTable * FROM を選択

新PROCストアド:

.... 
SELECT 
* 
FROM 
    (SELECT 
     * 
    FROM 
     MyTable 
    WHERE 
     Col1 = @param1 AND 
     Col2 = @param2 
    ) a 
WHERE 
    Col3 = FilterRule1 

多分、私は完全にここにあなたのストアドプロシージャを理解していないよと。ここのテンポラリテーブルは実際には最もパフォーマンスの良いソリューションではなく、やや面倒なこともありますが、それがうまくいくのであれば、それに付いて行きますが、ストアドプロシージャを変更するだけでは困る一時テーブルの代わりにサブクエリを使用します。

+1

結果セットをSP内の一時テーブルに格納してから、その一時テーブルをクエリすることを選択しました。 – Ozzyberto

+0

そのソリューションはあなたのために働いてうれしいです。ストアドプロシージャを更新できる場合は、テンポラリテーブルを使用せずにストアドプロシージャを再設計する方が良いかもしれませんが、それは価値があるよりも面倒かもしれません。 –

関連する問題