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