स्थानीय कर्सर:
स्थानीय कर्सर का दायरा उस बैच, संग्रहीत कार्यविधि या ट्रिगर तक सीमित होता है जिसमें इसे बनाया जाता है। एक बार बैच, संग्रहित प्रक्रिया या ट्रिगर पूरा हो जाने के बाद। स्थानीय कर्सर अब उपयोग के लिए उपलब्ध नहीं होगा।GLOBAL CURSOR:
ग्लोबल कर्सर का दायरा उस कनेक्शन तक सीमित है जिसमें इसे बनाया गया है। आप कई बैचों में GLOBAL CURSOR का उपयोग कर सकते हैं, आप पहले में खोल सकते हैं और दूसरे में डेटा प्राप्त कर सकते हैं। आप एक संग्रहीत प्रक्रिया में वैश्विक कर्सर भी खोल सकते हैं और अगली संग्रहीत प्रक्रिया में डेटा प्राप्त कर सकते हैं जब तक कि वे एक ही कनेक्शन का उपयोग कर रहे हों।यदि आप स्थानीय या वैश्विक कीवर्ड का उपयोग नहीं करेंगे, तो कर्सर के साथ बनाया जाएगा डेटाबेस सेटिंग का उपयोग करके टाइप करें जैसा कि नीचे दिखाया गया है।
चित्र 1:SQL सर्वर में स्थानीय कर्सर और वैश्विक कर्सर के बीच अंतर
चलिए बनाते हैं एक नमूना तालिका और कुछ रिकॉर्ड डालें और हमारी उपरोक्त परिभाषा को साबित करने के लिए कुछ परीक्षण करें। VARCHAR(100), City VARCHAR(100), State CHAR(2))go - नमूना तालिका में कुछ रिकॉर्ड डालें dbo में डालें। ग्राहक चुनें 1, 'आमिर शहजाद', 'टेस्ट स्ट्रीट एड्रेस', 'शार्लोट', 'एनसी' यूनियन ऑल सेलेक्ट 2, 'एम रजा', 'टेस्ट स्ट्रीट एड्रेस', 'शार्लोट', 'एनसी'यूनियन ऑल सेलेक्ट 3, 'जॉन स्मिथ', 'टेस्ट स्ट्रीट एड्रेस', 'न्यूयॉर्क सिटी', 'एनवाई' यूनियन ऑल सेलेक्ट 4, 'क्रिस्टी रिचर्ड', 'टेस्ट स्ट्रीट एड्रेस', 'रियो रैंचो', 'एनएम' - मल्टीपल बैचों में ग्लोबल कर्सर के साथ टेस्ट। TestgoDECLARE Customer_Cursor CURSOR का उपयोग करें -- CustomerID, CustomerName, StreetAddress, City, Statefrom dbo का चयन करें। Customer_Cursor से अगला FETCH ENDCLOSE Customer_Cursor;GODEALLOCATE Customer_Cursor;GO हम रिकॉर्ड्स को देख पाएंगे क्योंकि हमने कर्सर को ग्लोबल के रूप में परिभाषित किया है और यह होगा
संपूर्ण कनेक्शन के दौरान उपलब्ध, यहां तक कि हमने GO का उपयोग करके पहले बैच को समाप्त कर दिया है
बयान।
चित्र 2:SQL सर्वर में ग्लोबल कर्सर - एकाधिक बैचों में स्थानीय कर्सर के साथ परीक्षण करें। TestgoDECLARE Customer_Cursor CURSOR का उपयोग करें - ग्राहक आईडी, ग्राहक नाम, सड़क पता, शहर, राज्य से dbo.CustomerOPEN Customer_Cursor;GO का चयन करने के लिए स्थानीय या वैश्विक हेरेलोकल का उपयोग करें। ग्राहक_कर्सर से अगला फ़ेच शुरू करें ENDCLOSE Customer_Cursor;GODEALLOCATE Customer_Cursor;GO
चूंकि LOCAL कर्सर का दायरा बैच, संग्रहीत प्रक्रिया या ट्रिगर तक सीमित है, दूसरा बैच कर्सर को देखने में सक्षम नहीं है क्योंकि हमने अपनी उपरोक्त क्वेरी में LOCAL कर्सर प्रकार को परिभाषित किया हैचित्र 3:SQL सर्वर में स्थानीय कर्सर
अब स्टोर्ड प्रोसीजर के साथ टेस्ट करते हैं और देखते हैं कि SQL सर्वर में स्टोर्ड प्रोसीजर में लोकल कर्सर और ग्लोबल कर्सर कैसे काम करते हैं।
--मल्टीपल बैच में LOCAL कर्सर के साथ टेस्ट करें। FINTestgoCreate प्रक्रिया Dec_Cursor_Customer FET का उपयोग करें ASBEGINDECLARE Customer_Cursor CURSOR - ग्राहक आईडी, ग्राहक नाम, स्ट्रीट पता, शहर, राज्य से dbo का चयन करें। ENDEND-- हमें GLOBAL और LOCAL कर्सर प्रकारEXEC Dec_Cursor_CustomerGOEXEC Fetch_Cusor_CustomerCLOSE Customer_Cursor;GODEALLOCATE Customer_Cursor;GOके साथ प्राप्त होने वाली प्रक्रियाओं को निष्पादित करें
यदि हम उपरोक्त संग्रहीत प्रक्रिया को निष्पादित करते हैं, तो हमें चित्र 2 में प्राप्त परिणाम प्राप्त होंगे। जैसा कि हमने वैश्विक प्रकार के रूप में घोषित किया है, हम इसे कई संग्रहीत प्रक्रियाओं में उपयोग करने में सक्षम होंगे जब तक आप उन्हें चलाते हैं एक ही कनेक्शन।
आगे बढ़ो और संग्रहीत प्रक्रिया को बदलो और वैश्विक से स्थानीय में प्रकार बदलें और फिर प्रक्रियाओं को निष्पादित करें। यहां तक कि हम एक ही संबंध में हैं, हमें वह त्रुटि मिलेगी जो हमें चित्र 3 में मिली थी। चूंकि LOCAL के रूप में परिभाषित करने के बाद कर्सर का दायरा बैच, संग्रहीत प्रक्रिया या ट्रिगर तक सीमित होता है।
वीडियो डेमो:विस्तृत डेमो देखने के लिए कि स्थानीय कर्सर और ग्लोबल कर्सर कैसे काम करता है, वीडियो देखें।