Er zijn een aantal manieren om dit op te lossen. Het gemakkelijkst zou zijn om de opgeslagen procedure aan te passen zodat u de resultatenset rechtstreeks kunt filteren, maar ik neem aan dat u dit om de een of andere reden niet kunt doen.
Wat u dan moet doen, is de resultaten van de opgeslagen procedure opslaan in een tabel / tijdelijke tabel, zoals:
DECLARE @tablevar table(col1,..
INSERT INTO @tablevar(col1,..) exec MyStoredProc 'param1', 'param2'
SELECT col1, col2 FROM @tablevar WHERE col1 = 'abc'
BEWERKEN:Als u de subquery kunt bewerken:
Oud opgeslagen proces:...SELECT*FROMMyTableWHERECol1 =@param1 ANDCol2 =@param2
Nieuw opgeslagen proces:
....
SELECT
*
FROM
(SELECT
*
FROM
MyTable
WHERE
Col1 = @param1 AND
Col2 = @param2
) a
WHERE
Col3 = FilterRule1
maar misschien begrijp ik je opgeslagen proces hier niet helemaal. Een tijdelijke tabel is hier niet echt de meest performante oplossing en kan wat gedoe zijn, maar als het voor jou werkt, ga er dan mee akkoord, maar ik heb problemen om me een situatie voor te stellen waarin je niet zomaar je opgeslagen proc naar gebruik een subquery in plaats van een tijdelijke tabel.