आपको तरह-तरह की समस्याएं हैं। सबसे पहले, आप अपने विशिष्ट @@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;
अंत में, क्या आप निश्चित हैं आप संग्रहीत प्रक्रिया में ऐसा कुछ करना चाहते हैं? संग्रहीत प्रक्रियाओं का दुरुपयोग करना बहुत आसान है और अक्सर आपकी समस्या को चित्रित करने में समस्याओं को दर्शाता है। उदाहरण के लिए, मैंने जो नमूना दिया है, उसे मानक चुनिंदा कॉलों का उपयोग करके कहीं अधिक आसानी से पूरा किया जा सकता है।