Es gibt ein paar Möglichkeiten, dies zu lösen. Am einfachsten wäre es, die gespeicherte Prozedur so zu ändern, dass Sie die Ergebnismenge direkt filtern können, aber ich gehe davon aus, dass Sie dies aus irgendeinem Grund nicht tun können.
Was Sie dann tun müssen, ist, die Ergebnisse der gespeicherten Prozedur in einer Tabelle / temporären Tabelle wie folgt zu speichern:
DECLARE @tablevar table(col1,..
INSERT INTO @tablevar(col1,..) exec MyStoredProc 'param1', 'param2'
SELECT col1, col2 FROM @tablevar WHERE col1 = 'abc'
BEARBEITEN:Wenn Sie die Unterabfrage bearbeiten können:
Alte gespeicherte Prozedur:...SELECT*FROMMyTableWHERECol1 =@param1 ANDCol2 =@param2
Neuer gespeicherter Prozess:
....
SELECT
*
FROM
(SELECT
*
FROM
MyTable
WHERE
Col1 = @param1 AND
Col2 = @param2
) a
WHERE
Col3 = FilterRule1
aber vielleicht verstehe ich Ihre gespeicherte Prozedur hier nicht vollständig. Eine temporäre Tabelle hier ist nicht wirklich die leistungsfähigste Lösung und kann etwas umständlich sein, aber wenn es für Sie funktioniert, dann machen Sie damit, aber ich habe Probleme, mir eine Situation vorzustellen, in der Sie Ihre gespeicherte Prozedur nicht einfach ändern könnten Verwenden Sie eine Unterabfrage anstelle einer temporären Tabelle.