Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

एक संग्रहित प्रक्रिया के परिणाम सेट को फ़िल्टर करना

इसे हल करने के कुछ तरीके हैं। आपको सीधे परिणाम सेट को फ़िल्टर करने की अनुमति देने के लिए संग्रहीत प्रक्रिया को संशोधित करना सबसे आसान होगा, लेकिन मुझे लगता है कि किसी कारण से आप ऐसा करने में असमर्थ हैं।

फिर आपको जो करना होगा वह संग्रहीत प्रक्रिया के परिणामों को तालिका/अस्थायी तालिका में संग्रहीत करना है:

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

लेकिन हो सकता है कि मैं यहां आपकी संग्रहीत खरीद को पूरी तरह समझ नहीं पा रहा हूं। यहां एक अस्थायी तालिका वास्तव में सबसे अधिक प्रदर्शन करने वाला समाधान नहीं है और कुछ हद तक परेशानी हो सकती है लेकिन अगर यह आपके लिए काम करती है तो इसके साथ जाएं, लेकिन मुझे ऐसी स्थिति की कल्पना करने में परेशानी हो रही है जहां आप अपनी संग्रहीत खरीद को संशोधित नहीं कर सके एक अस्थायी तालिका के बजाय उप-क्वेरी का उपयोग करें।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql - Oracle के अनुक्रमों के समान एक तंत्र बनाना

  2. कैसे INSERT करें यदि पंक्ति मौजूद नहीं है (UPSERT) MySQL में

  3. PHP का उपयोग करके MySQL में अज्ञात संख्या में पंक्तियाँ डालें

  4. MySQL:उपश्रेणियों में योग मान

  5. MySQL पर एक उपयोगकर्ता बनाना