इसे हल करने के कुछ तरीके हैं। आपको सीधे परिणाम सेट को फ़िल्टर करने की अनुमति देने के लिए संग्रहीत प्रक्रिया को संशोधित करना सबसे आसान होगा, लेकिन मुझे लगता है कि किसी कारण से आप ऐसा करने में असमर्थ हैं।
फिर आपको जो करना होगा वह संग्रहीत प्रक्रिया के परिणामों को तालिका/अस्थायी तालिका में संग्रहीत करना है:
DECLARE @tablevar table(col1,..
INSERT INTO @tablevar(col1,..) exec MyStoredProc 'param1', 'param2'
SELECT col1, col2 FROM @tablevar WHERE col1 = 'abc'
संपादित करें:यदि आप सबक्वेरी संपादित कर सकते हैं:
पुरानी संग्रहित प्रक्रिया:...चुनें*FROMMyTableWHERECol1 =@param1 ANDCol2 =@param2
नई संग्रहित प्रक्रिया:
....
SELECT
*
FROM
(SELECT
*
FROM
MyTable
WHERE
Col1 = @param1 AND
Col2 = @param2
) a
WHERE
Col3 = FilterRule1
लेकिन हो सकता है कि मैं यहां आपकी संग्रहीत खरीद को पूरी तरह समझ नहीं पा रहा हूं। यहां एक अस्थायी तालिका वास्तव में सबसे अधिक प्रदर्शन करने वाला समाधान नहीं है और कुछ हद तक परेशानी हो सकती है लेकिन अगर यह आपके लिए काम करती है तो इसके साथ जाएं, लेकिन मुझे ऐसी स्थिति की कल्पना करने में परेशानी हो रही है जहां आप अपनी संग्रहीत खरीद को संशोधित नहीं कर सके एक अस्थायी तालिका के बजाय उप-क्वेरी का उपयोग करें।