Istnieje kilka sposobów rozwiązania tego problemu. Najłatwiej byłoby zmodyfikować procedurę przechowywaną, aby umożliwić filtrowanie zestawu wyników bezpośrednio, ale zakładam, że z jakiegoś powodu nie możesz tego zrobić.
Co musisz zrobić potem jest przechowywanie wyników procedury przechowywanej w stół/Temp tak:
DECLARE @tablevar table(col1,..
INSERT INTO @tablevar(col1,..) exec MyStoredProc 'param1', 'param2'
SELECT col1, col2 FROM @tablevar WHERE col1 = 'abc'
EDIT: Jeśli można edytować podzapytania:
Stary przechowywane Proc: ... SELECT * OD MojaTabela GDZIE Col1 = @ param1 I Col2 = @ param2
New Przechowywane Proc:
....
SELECT
*
FROM
(SELECT
*
FROM
MyTable
WHERE
Col1 = @param1 AND
Col2 = @param2
) a
WHERE
Col3 = FilterRule1
ale może ja nie rozumiejąc swoją przechowywanej proc tutaj całkowicie. Tabela tymczasowa nie jest tak naprawdę najbardziej wydajnym rozwiązaniem i może być nieco kłopotliwa, ale jeśli działa dla ciebie, to idź z nią, ale mam problem z wizualizacją sytuacji, w której nie można po prostu zmodyfikować zapisanego procesu do użyj kwerendy podrzędnej zamiast tabeli tymczasowej.
I zdecydowałem się przechowywać zestaw wyników w tabeli temp w SP, a następnie zapytanie do wspomnianej tabeli temp.. – Ozzyberto
Cieszę się, że to rozwiązanie zadziałało. Jeśli jesteś w stanie zaktualizować przechowywany proc, prawdopodobnie istnieje lepszy sposób na przeprojektowanie przechowywanego procesu bez konieczności używania tabeli tymczasowej, ale może to być bardziej kłopotliwe niż jest warte. –