Có một số cách để giải quyết vấn đề này. Cách dễ nhất là sửa đổi thủ tục lưu sẵn để cho phép bạn lọc trực tiếp tập hợp kết quả nhưng tôi giả sử vì một số lý do bạn không thể thực hiện điều này.
Những gì bạn sẽ cần phải làm sau đó là lưu trữ các kết quả của các thủ tục lưu trữ trong một bảng/bảng temp như vậy:
DECLARE @tablevar table(col1,..
INSERT INTO @tablevar(col1,..) exec MyStoredProc 'param1', 'param2'
SELECT col1, col2 FROM @tablevar WHERE col1 = 'abc'
EDIT: Nếu bạn có thể chỉnh sửa các subquery:
Cũ Stored Proc: ... CHỌN * TỪ MyTable ĐÂU col1 = @ param1 VÀ col2 = @ param2
New Stored Proc:
....
SELECT
*
FROM
(SELECT
*
FROM
MyTable
WHERE
Col1 = @param1 AND
Col2 = @param2
) a
WHERE
Col3 = FilterRule1
nhưng có lẽ tôi không hiểu proc lưu trữ của bạn ở đây hoàn toàn. Một bảng tạm thời ở đây không thực sự là giải pháp hiệu quả nhất và có thể là một rắc rối nhưng nếu nó hoạt động cho bạn thì hãy đi với nó, nhưng tôi đang gặp khó khăn trong việc hình dung một tình huống mà bạn không thể sửa đổi sử dụng truy vấn phụ thay vì bảng tạm thời.
Nguồn
2013-06-04 18:19:55
Tôi đã chọn lưu trữ tập kết quả trong bảng tạm thời trong SP và sau đó truy vấn bảng tạm thời đã cho biết. – Ozzyberto
Tôi rất vui vì giải pháp đã làm việc cho bạn. Nếu bạn có thể cập nhật các proc được lưu trữ có lẽ là một cách tốt hơn để thiết kế lại proc lưu trữ của bạn mà không cần phải sử dụng một bảng tạm thời, nhưng điều đó có thể rắc rối hơn nó có giá trị. –