Il existe plusieurs façons de résoudre ce problème. Le plus simple serait de modifier la procédure stockée pour vous permettre de filtrer directement le jeu de résultats, mais je suppose que, pour une raison quelconque, vous ne pouvez pas le faire.
Ce que vous devrez faire ensuite, c'est stocker les résultats de la procédure stockée dans une table / table temporaire comme ceci :
DECLARE @tablevar table(col1,..
INSERT INTO @tablevar(col1,..) exec MyStoredProc 'param1', 'param2'
SELECT col1, col2 FROM @tablevar WHERE col1 = 'abc'
EDIT :si vous pouvez modifier la sous-requête :
Ancienne procédure stockée :...SELECT*FROMMyTableWHERECol1 =@param1 ANDCol2 =@param2
Nouvelle procédure stockée :
....
SELECT
*
FROM
(SELECT
*
FROM
MyTable
WHERE
Col1 = @param1 AND
Col2 = @param2
) a
WHERE
Col3 = FilterRule1
mais peut-être que je ne comprends pas complètement votre proc stocké ici. Une table temporaire ici n'est pas vraiment la solution la plus performante et peut être un peu compliquée, mais si cela fonctionne pour vous, allez-y, mais j'ai du mal à imaginer une situation où vous ne pourriez pas simplement modifier votre proc stocké pour utiliser une sous-requête au lieu d'une table temporaire.