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

SQL Server 2008 में पंक्तियों के माध्यम से पुनरावृति करें

अगर आपको जरूरी iterate(*), इसे करने के लिए डिज़ाइन किए गए निर्माण का उपयोग करें - कर्सर ए> . बहुत बदनाम, लेकिन अगर यह आपके इरादों को सबसे स्पष्ट रूप से व्यक्त करता है, तो मैं कहता हूं कि इसका इस्तेमाल करें:

DECLARE @ID int
DECLARE IDs CURSOR LOCAL FOR select ID from SAMPLE where Name = @NameParameter

OPEN IDs
FETCH NEXT FROM IDs into @ID
WHILE @@FETCH_STATUS = 0
BEGIN
    exec myproc @ID

    FETCH NEXT FROM IDs into @ID
END

CLOSE IDs
DEALLOCATE IDs

(*) इस उत्तर को हाल ही में कुछ अपवोट मिले हैं, लेकिन मुझे लगता है कि मुझे अपनी मूल टिप्पणी यहां भी शामिल करनी चाहिए, और कुछ सामान्य सलाह जोड़ना चाहिए:

SQL में, आपको आम तौर पर . करना चाहिए एक सेट-आधारित समाधान की तलाश करें। पूरी भाषा सेट-आधारित समाधानों के इर्द-गिर्द उन्मुख है, और (बदले में) ऑप्टिमाइज़र सेट-आधारित समाधानों को अच्छी तरह से काम करने के लिए उन्मुख है। इसके अलावा, हमारे पास ट्यूनिंग . के लिए जो टूल उपलब्ध हैं ऑप्टिमाइज़र भी सेट-ओरिएंटेड है - उदा। तालिकाओं पर अनुक्रमणिका लागू करना।

कुछ कुछ हैं ऐसी स्थितियां जहां पुनरावृत्ति सबसे अच्छा तरीका है। ये बहुत कम हैं, और इनकी तुलना जैक्सन के अनुकूलन के नियमों से की जा सकती है - ऐसा न करें - और (केवल विशेषज्ञों के लिए) इसे न करें अभी तक

प्रभावित होने वाली सभी पंक्तियों के सेट के संदर्भ में आप जो चाहते हैं उसे तैयार करने का प्रयास करने के लिए आप पहले से बेहतर सेवा कर रहे हैं - प्राप्त करने के लिए समग्र परिवर्तन क्या है? - और फिर उस लक्ष्य को समाहित करने वाली क्वेरी तैयार करने का प्रयास करें। केवल अगर ऐसा करने से उत्पन्न क्वेरी पर्याप्त रूप से प्रदर्शन नहीं कर रही है (या कोई अन्य घटक है जो व्यक्तिगत रूप से प्रत्येक पंक्ति से निपटने के अलावा कुछ भी करने में असमर्थ है) तो क्या आपको विचार करना चाहिए पुनरावृति।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर 2008 बैकअप संपीड़न मानक संस्करण

  2. पूरे नेटवर्क में SQL सर्वर इंस्टेंस को छिपाना

  3. ADODB रिकॉर्डसेट में SELECT SCOPE_IDENTITY () का उपयोग करना

  4. हम एसएसएमएस में एन्क्रिप्टेड संग्रहीत प्रक्रिया के शरीर को कैसे देख सकते हैं?

  5. SQL सर्वर में संदर्भित निकाय खोजें:sys.dm_sql_referenced_entities