तालिका आधारित रिकॉर्ड डेटाटाइप के साथ मजबूत रेफरी कर्सर
जैसा कि हमने Ref Cursors के परिचय में सीखा कि Oracle डेटाबेस में PL/SQL Ref Cursors दो प्रकार के होते हैं।
- मजबूत रेफरी कर्सर और
- कमजोर रेफ कर्सर
हम इस श्रृंखला में इन दोनों प्रकार के Ref Cursors की सभी अवधारणाओं का पता लगाएंगे। इस ब्लॉग के साथ हम पहले वाले के साथ शुरू करेंगे जो तालिका आधारित रिकॉर्ड डेटाटाइप और उपयोगकर्ता परिभाषित रिकॉर्ड डेटाटाइप के साथ स्ट्रांग रेफ कर्सर है।
Oracle डेटाबेस में PL/SQL स्ट्रांग Ref Cursors क्या है?
एक रेफरी कर्सर जिसमें निश्चित रिटर्न प्रकार होता है उसे ओरेकल डाटाबेस में एक मजबूत रेफ कर्सर कहा जाता है। निश्चित रिटर्न प्रकार के कारण, मजबूत रेफ कर्सर का उपयोग केवल चुनिंदा रूप से किया जा सकता है। उदाहरण के लिए उन सेलेक्ट स्टेटमेंट्स के साथ जो परिणाम लौटाते हैं जिसका डेटाटाइप उसी से मेल खाता है जिसे आपने कर्सर की घोषणा के दौरान तय किया था।
क्या हम Oracle डेटाबेस में किसी भी SELECT स्टेटमेंट के साथ स्ट्रांग रेफ कर्सर का उपयोग कर सकते हैं?
नहीं, हम किसी भी सेलेक्ट स्टेटमेंट के साथ स्ट्रांग रेफ कर्सर का उपयोग नहीं कर सकते हैं। यह निश्चित 'रिटर्न टाइप' के कारण है।
फिर भी इसका उपयोग केवल उन चयन कथनों के साथ किया जा सकता है जो परिणाम लौटाते हैं जिसका डेटाटाइप कर्सर के 'रिटर्न क्लॉज' से मेल खाता है।
क्या हम अपने मजबूत रेफ कर्सर को घोषित करने के लिए किसी PL/SQL डेटाटाइप का उपयोग कर सकते हैं?
नहीं हम नहीं कर सकते। इसके अलावा, एक मजबूत रेफरी कर्सर का रिटर्न प्रकार हमेशा एक रिकॉर्ड डेटाटाइप होना चाहिए। यह या तो टेबल आधारित रिकॉर्ड डेटाटाइप या उपयोगकर्ता परिभाषित रिकॉर्ड डेटाटाइप हो सकता है।
तालिका आधारित रिकॉर्ड डेटाटाइप के साथ मजबूत रेफरी कर्सर का उदाहरण
आइए एक उदाहरण लिखें। यहां हम टेबल आधारित रिकॉर्ड डेटाटाइप के साथ एक मजबूत रेफ कर्सर बनाएंगे।
SET SERVEROUTPUT ON DECLARE /*Create Ref Pointer Type*/ TYPE my_RefCur IS REF CURSOR RETURN employees%ROWTYPE; /*Create Cursor Variable*/ cur_var my_RefCur; rec_var employees%ROWTYPE; BEGIN OPEN cur_var FOR SELECT * FROM employees WHERE employee_id = 100; FETCH cur_var INTO rec_var; CLOSE cur_var; DBMS_OUTPUT.PUT_LINE ('Employee '||rec_var.first_name||' has salary '||rec_var.salary||'.'); END; /
रेफ कर्सर बनाना दो चरणों वाली प्रक्रिया है।
रेफ पॉइंटर प्रकार बनाएं।
सबसे पहले हमें एक रेफ पॉइंटर टाइप बनाना होगा। इस प्रकार, TYPE स्टेटमेंट का उपयोग करके हम उपरोक्त कोड की तरह ही एक Ref Cursor Type पॉइंटर बनाते हैं। इस स्टेटमेंट में आप पहले कीवर्ड टाइप करें और उसके बाद अपने रेफ कर्सर का नाम लिखें। इसके बाद आपको एक आरक्षित वाक्यांश IS REF CURSOR लिखना होगा। यह संकलक को बताएगा कि हम एक प्रकार बना रहे हैं जो आरईएफ कर्सर है। इसके बाद आपको रिटर्न क्लॉज निर्दिष्ट करना होगा।
उदाहरण के लिए
TYPE my_RefCur IS REF CURSOR RETURN employees%ROWTYPE;
कर्सर वैरिएबल बनाएं
दूसरे चरण में हम एक कर्सर वेरिएबल बनाते हैं। कर्सर वेरिएबल बनाने के लिए आपको पहले अपने वेरिएबल का नाम और उसके बाद अपने रेफ कर्सर का नाम लिखना होगा। इसके बाद इस वेरिएबल का उपयोग रेफ कर्सर को संदर्भित करने के लिए किया जाएगा जिस पर इसे बनाया गया है।
उदाहरण के लिए
cur_var my_RefCur;
उपरोक्त कोड में कर्सर चर के अलावा हमारे पास एक अतिरिक्त चर भी है। यह फिर से तालिका आधारित रिकॉर्ड डेटाटाइप का है और 'कर्मचारी' तालिका का उपयोग करके डिज़ाइन किया गया है। इसके अलावा यह वेरिएबल कर्सर से प्राप्त डेटा को होल्ड करेगा।
rec_var employees%ROWTYPE;
निष्पादन अनुभाग
हमारे कोड के निष्पादन खंड में हमारे पास चार निष्पादन योग्य कथन हैं। मैं आपको ये समझाता हूं।
-
बयान के लिए खोलें
पहला स्टेटमेंट ओपन फॉर स्टेटमेंट है। यह सेलेक्ट स्टेटमेंट को कर्सर के वेरिएबल से जोड़ता है और स्टेटमेंट के लिए कर्सर खोलता है। इसके अलावा यह सेलेक्ट स्टेटमेंट को प्रोसेस करने के लिए आवश्यक सभी संसाधनों की भी तलाश करता है।
-
FETCH स्टेटमेंट
जैसा कि हमने पीएल/एसक्यूएल ट्यूटोरियल 26 में चर्चा की थी। कर्सर से डेटा प्राप्त करने की प्रक्रिया को फ़ेचिंग कहा जाता है। इसलिए यहां हम रेफ कर्सर से डेटा को रिकॉर्ड वेरिएबल 'Rec_Var' में ला रहे हैं।
-
बंद बयान
एक बार जब हम अपने कर्सर के साथ हो जाते हैं तो इसे बंद करने की सलाह दी जाती है ताकि हमारा Oracle इंजन / सर्वर इससे जुड़े सभी संसाधनों को त्याग सके। ठीक वैसा ही हमने तीसरे कथन में किया है। CLOSE कीवर्ड के बाद कर्सर वेरिएबल का उपयोग करके हमने अपना रेफ कर्सर बंद कर दिया।
-
आउटपुट स्टेटमेंट
चौथा कथन एक DBMS_OUTPUT कथन है। यह कर्मचारी आईडी 100 के साथ कर्मचारी का पहला नाम और वेतन प्रदर्शित करेगा।
तालिका आधारित रिकॉर्ड चर की कार्यप्रणाली जानने के लिए आप PL/SQL ट्यूटोरियल 33 देख सकते हैं।
इसलिए निष्कर्ष में...
उपरोक्त कोड में हमने 'my_RefCur' नाम से एक PL/SQL स्ट्रांग रेफ कर्सर बनाया है जो एक परिणाम तालिका आधारित रिकॉर्ड डेटाटाइप लौटाएगा। इसके अलावा यह तालिका आधारित रिकॉर्ड डेटाटाइप एचआर स्कीमा की कर्मचारी तालिका पर समर्थित है। इस प्रकार इस कार्यक्रम को क्रियान्वित करने से पहले हमें यह सुनिश्चित करने की आवश्यकता है कि हम अपने डेटाबेस के एचआर स्कीमा से जुड़े हैं।
इसके अलावा अगर आप वीडियो देखकर बेहतर सीखते हैं तो यहां आपके लिए एक है। आगे बढ़ें और इसे देखें।
ओरेकल डेटाबेस में टेबल आधारित रिकॉर्ड डेटाटाइप का उपयोग करके पीएल/एसक्यूएल मजबूत रेफ कर्सर बनाने का यह ट्यूटोरियल है। आशा है आपने कुछ नया सीखा होगा। इसके अतिरिक्त, कृपया इस ब्लॉग को अपने सोशल मीडिया पर अपने दोस्तों के साथ साझा करना सुनिश्चित करें।
आने के लिए धन्यवाद। बने रहें क्योंकि अगले ट्यूटोरियल में हम सीखेंगे कि उपयोगकर्ता परिभाषित रिकॉर्ड वेरिएबल के साथ मजबूत रेफ कर्सर कैसे बनाया जाता है।
आपका दिन शुभ हो!