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

कर्सर के अंदर कर्सर

आपको तरह-तरह की समस्याएं हैं। सबसे पहले, आप अपने विशिष्ट @@FETCH_STATUS मानों का उपयोग क्यों कर रहे हैं? यह सिर्फ @@FETCH_STATUS =0 होना चाहिए।

दूसरा, आप अपने आंतरिक कर्सर को में . नहीं चुन रहे हैं कुछ भी। और मैं ऐसी किसी भी परिस्थिति के बारे में नहीं सोच सकता जहां आप इस तरह से सभी क्षेत्रों का चयन करेंगे - उन्हें वर्तनी दें!

यहाँ जाने के लिए एक नमूना है। फोल्डर में "क्लाइंटआईडी" की प्राथमिक कुंजी होती है जो अटेंड करने के लिए एक विदेशी कुंजी भी होती है। मैं केवल सभी अटेंड यूआईडी को प्रिंट कर रहा हूं, जिसे फोल्डर क्लाइंट आईडी द्वारा विभाजित किया गया है:

Declare @ClientID int;
Declare @UID int;

DECLARE Cur1 CURSOR FOR
    SELECT ClientID From Folder;

OPEN Cur1
FETCH NEXT FROM Cur1 INTO @ClientID;
WHILE @@FETCH_STATUS = 0
BEGIN
    PRINT 'Processing ClientID: ' + Cast(@ClientID as Varchar);
    DECLARE Cur2 CURSOR FOR
        SELECT UID FROM Attend Where [email protected];
    OPEN Cur2;
    FETCH NEXT FROM Cur2 INTO @UID;
    WHILE @@FETCH_STATUS = 0
    BEGIN
        PRINT 'Found UID: ' + Cast(@UID as Varchar);
        FETCH NEXT FROM Cur2 INTO @UID;
    END;
    CLOSE Cur2;
    DEALLOCATE Cur2;
    FETCH NEXT FROM Cur1 INTO @ClientID;
END;
PRINT 'DONE';
CLOSE Cur1;
DEALLOCATE Cur1;

अंत में, क्या आप निश्चित हैं आप संग्रहीत प्रक्रिया में ऐसा कुछ करना चाहते हैं? संग्रहीत प्रक्रियाओं का दुरुपयोग करना बहुत आसान है और अक्सर आपकी समस्या को चित्रित करने में समस्याओं को दर्शाता है। उदाहरण के लिए, मैंने जो नमूना दिया है, उसे मानक चुनिंदा कॉलों का उपयोग करके कहीं अधिक आसानी से पूरा किया जा सकता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. हम एसएसएमएस में एन्क्रिप्टेड संग्रहीत प्रक्रिया के शरीर को कैसे देख सकते हैं?

  2. एसक्यूएल सर्वर से खाली पंक्ति वापस करना संभव है?

  3. किसी मौजूदा तालिका में डायनामिक कॉलम कैसे जोड़ें

  4. SQL सर्वर - sp_spaceused के आंतरिक भाग को विच्छेदित करें

  5. दिनांक सीमा को महीनों में विभाजित करें