उपयोगकर्ता परिभाषित रिकॉर्ड डेटाटाइप के साथ मजबूत रेफरी कर्सर
पिछले ट्यूटोरियल में हमने सीखा कि टेबल आधारित रिकॉर्ड डेटाटाइप वैरिएबल का उपयोग करके पीएल/एसक्यूएल मजबूत रेफ कर्सर कैसे बनाया जाता है। वहां मैंने कर्मचारियों की तालिका के सभी स्तंभों से डेटा को संभालने के लिए मजबूत रेफ कर्सर के उपयोग का प्रदर्शन किया। नतीजतन, यह एक चिंता का विषय है। क्या होगा यदि हम तालिका के कुछ विशिष्ट कॉलम से डेटा चाहते हैं? ठीक यही हम आज के ट्यूटोरियल में संबोधित करेंगे।
हालांकि, इस ट्यूटोरियल में आगे बढ़ने से पहले मेरा सुझाव है कि आप PL/SQL Ref Cursors के ज्ञान से परिचित हो जाएं। विशेष रूप से मजबूत रेफ कर्सर और उपयोगकर्ता परिभाषित रिकॉर्ड डेटाटाइप। इसके अलावा, आपकी सुविधा के लिए मैं यहां सभी आवश्यक लिंक प्रदान कर रहा हूं:
- तालिका आधारित रिकॉर्ड का उपयोग करके सशक्त रेफ कर्सर कैसे बनाएं
- उपयोगकर्ता-परिभाषित रिकॉर्ड डेटाटाइप क्या हैं?
पिछले ट्यूटोरियल ने सफलतापूर्वक दिखाया कि कैसे एक पीएल/एसक्यूएल स्ट्रांग रेफ कर्सर एक पंक्ति के सभी कॉलम से डेटा पुनर्प्राप्त और प्रबंधित करता है। लेकिन क्या होगा अगर हम एक पंक्ति के विशिष्ट कॉलम से डेटा चाहते हैं? मान लीजिए कि हम सिर्फ ई-मेल या किसी कर्मचारी का वेतन देखना चाहते हैं। नतीजतन, हम सभी अनावश्यक जानकारी प्राप्त करने में महंगे संसाधनों को खर्च नहीं करना चाहते हैं। तो, क्या हम इसके लिए इसी रेफ कर्सर का उपयोग कर सकते हैं? आइए जानें।
क्या हम किसी विशिष्ट कॉलम से डेटा पुनर्प्राप्त करने के लिए पिछले ट्यूटोरियल में बनाए गए मजबूत रेफ कर्सर का उपयोग कर सकते हैं?
उस प्रश्न का उत्तर है नहीं, हम नहीं कर सकते ।
क्योंकि उस मजबूत रेफ कर्सर को टेबल आधारित रिकॉर्ड डेटाटाइप का उपयोग करके बनाया गया था। उदाहरण के लिए, जब हम एक तालिका आधारित रिकॉर्ड डेटाटाइप बनाते हैं, तो Oracle इंजन एक समग्र डेटा संरचना बनाता है। यह संरचना निर्दिष्ट तालिका के प्रत्येक कॉलम से संबंधित फ़ील्ड से भरी हुई है।
इसके अलावा, इन सभी क्षेत्रों को स्वचालित रूप से एक ही नाम और आधार तालिका के कॉलम के समान डेटाटाइप के साथ असाइन किया जाता है। लेकिन जब किसी विशिष्ट कॉलम का उपयोग करके रिकॉर्ड को इनिशियलाइज़ करने की बात आती है तो हमें यह सब काम मैन्युअल रूप से करना पड़ता है।
इसे और स्पष्ट रूप से समझने के लिए कृपया पीएल/एसक्यूएल ट्यूटोरियल 34 देखें। वहां मैंने चर्चा की है कि रिकॉर्ड डेटाटाइप और इसके कामकाज को विस्तार से कैसे शुरू किया जाए।
तो, इस समस्या का समाधान क्या है?
हम इस समस्या को आसानी से हल कर सकते हैं। हम उपयोगकर्ता-परिभाषित रिकॉर्ड डेटाटाइप वैरिएबल के साथ पीएल/एसक्यूएल मजबूत रेफ कर्सर बना सकते हैं।
उदाहरण:PL/SQL स्ट्रांग रेफ कर्सर उपयोगकर्ता परिभाषित रिकॉर्ड डेटाटाइप वैरिएबल के साथ।
उदाहरण के लिए, हम सेलेक्ट स्टेटमेंट के साथ एक मजबूत रेफरी कर्सर बनाना चाहते हैं। जो केवल उस कर्मचारी का वेतन लौटाता है जिसकी कर्मचारी आईडी 100 है।
SET SERVEROUTPUT ON; DECLARE --Create User-Defined Record Datatype TYPE my_rec IS RECORD ( emp_sal employees.salary%TYPE ); --Declare Strong Ref Cursor TYPE RefCur IS REF CURSOR RETURN my_rec; cur_var REFCUR; --Another anchored datatype variable for holding data at_var employees.salary%TYPE; BEGIN OPEN cur_var FOR SELECT salary FROM employees WHERE employee_id = 100; FETCH cur_var INTO at_var; CLOSE cur_var; DBMS_OUTPUT.PUT_LINE ('Salary of the employee is '||at_var); END; /
तो, आइए इस कोड को तोड़ें और देखें कि यहां क्या हो रहा है।
घोषणा अनुभाग
DECLARE TYPE my_rec IS RECORD ( emp_sal employees.salary%TYPE ); TYPE RefCur IS REF CURSOR RETURN my_rec; cur_var REFCUR; at_var employees.salary%TYPE;
यहां हमारा डिक्लेरेशन सेक्शन है। इस खंड की पहली तीन पंक्तियों में हमने my_rec नाम से अपना उपयोगकर्ता-परिभाषित रिकॉर्ड डेटाटाइप बनाया है। इसके अलावा, इस उपयोगकर्ता परिभाषित रिकॉर्ड डेटाटाइप में केवल एक फ़ील्ड है जो emp_sal है। Emp_sal एक एंकर डेटाटाइप फ़ील्ड है जिसे कर्मचारी तालिका के वेतन कॉलम पर डिज़ाइन किया गया है। क्योंकि emp_sal एंकरेड डेटाटाइप का है, इसलिए यह स्वचालित रूप से डेटाटाइप और बेस कॉलम की डेटा चौड़ाई को असाइन कर देगा जो इस मामले में वेतन है।
इसके ठीक बाद हमने अपने PL/SQL स्ट्रांग रेफ कर्सर को "RefCur" नाम से घोषित किया। इस मजबूत रेफरी कर्सर का रिटर्न प्रकार “my_rec” . है . कर्सर घोषणा के बाद हमने cur_var नाम से एक कर्सर वेरिएबल बनाया। इसके अतिरिक्त, इस चर का उपयोग कोड में आगे मजबूत रेफरी कर्सर को संदर्भित करने के लिए किया जाता है।
कर्सर चर के अलावा हमारे पास इस खंड में घोषित एक और चर भी है। यह चर "at_var" है यह फिर से एक लंगर डेटा प्रकार चर है। इसका उपयोग कर्सर द्वारा लौटाए गए डेटा को संग्रहीत करने के लिए किया जाता है।
अब निष्पादन अनुभाग पर आते हैं।
निष्पादन अनुभाग
BEGIN OPEN cur_var FOR SELECT salary FROM employees WHERE employee_id = 100; FETCH cur_var INTO at_var; CLOSE cur_var; DBMS_OUTPUT.PUT_LINE('Salary of the employee is '||at_var); END; /
इस निष्पादन खंड में कोड की चार निष्पादन योग्य पंक्तियाँ हैं। आइए देखें कि वे क्या हैं।
पंक्ति 1:कथन के लिए खोलें
यह कथन गतिशील रूप से उल्लिखित कर्सर को खोलता है। इसके बाद यह SELECT स्टेटमेंट को संलग्न करता है जो कि FOR कीवर्ड के ठीक बाद में निर्दिष्ट होता है।
हमारे मामले में यह कथन कर्सर चर "cur_var" - एक चयन कथन का उपयोग करके मजबूत रेफरी कर्सर खोल रहा है। जो केवल कर्मचारी तालिका के "वेतन कॉलम" से डेटा लौटा रहा है।
पंक्ति 2:फ़ेच स्टेटमेंट
यह कथन रेफरी कर्सर से डेटा लाएगा और इसे "at_var" चर में संग्रहीत करेगा। यह सुनिश्चित करना भी उतना ही महत्वपूर्ण है कि प्राप्त किए गए डेटा का डेटाटाइप और जिस वेरिएबल में डेटा संग्रहीत किया जा रहा है, वह मेल खाना चाहिए। अन्यथा कोई त्रुटि होगी।
पंक्ति 3:क्लोज स्टेटमेंट
तीसरी पंक्ति एक करीबी बयान है। एक कर्सर को बंद करना जो आप कर चुके हैं, एक अच्छा अभ्यास है।
पंक्ति 4:आउटपुट विवरण
अंत में, निष्पादन अनुभाग का अंतिम विवरण DBMS_OUTPUT कथन है। और यह उपयोगकर्ता को कर्मचारी का वेतन वापस प्रदर्शित कर रहा है।
ये चार पंक्तियाँ इस PL/SQL ब्लॉक के निष्पादन खंड को पूरा करती हैं। इसके अलावा इस कोड का सफल निष्पादन आपको स्वरूपित स्ट्रिंग के साथ वेतन दिखाएगा।
क्या वीडियो देखकर बेहतर सीखने वालों में से एक हैं? फिर यहां उपयोगकर्ता परिभाषित रिकॉर्ड डेटाटाइप के साथ स्ट्रांग रेफ कर्सर पर वीडियो ट्यूटोरियल है।
इस ट्यूटोरियल के लिए बस इतना ही। इस ब्लॉग को अपने सोशल मीडिया पर साझा करना सुनिश्चित करें और दूसरों को सीखने में मदद करें। अधिक रोचक ट्यूटोरियल के लिए आप YouTube चैनल को सब्सक्राइब कर सकते हैं। धन्यवाद और आपका दिन शुभ हो!