Oracle PL/SQL रिकॉर्ड्स प्रकार उदाहरण सहित
रिकॉर्ड प्रकार क्या है?
रिकॉर्ड प्रकार एक जटिल डेटा प्रकार है जो प्रोग्रामर को वांछित कॉलम संरचना के साथ एक नया डेटा प्रकार बनाने की अनुमति देता है।
- यह एक या अधिक कॉलम को समूहीकृत करके नया डेटा प्रकार बनाता है
- इन स्तंभों का अपना नाम और डेटा प्रकार होगा
- एक रिकॉर्ड प्रकार डेटा स्वीकार कर सकता है
- एकल रिकॉर्ड के रूप में जिसमें कई कॉलम होते हैं या
- यह किसी रिकॉर्ड के एक विशेष कॉलम के लिए मान स्वीकार कर सकता है
- रिकॉर्ड प्रकार का सीधा सा मतलब है एक नया डेटा प्रकार। एक बार रिकॉर्ड प्रकार बन जाने के बाद, इसे डेटाबेस में एक नए डेटा प्रकार के रूप में संग्रहीत किया जाएगा और उसी का उपयोग प्रोग्राम में चर घोषित करने के लिए किया जाएगा।
- यह कीवर्ड का उपयोग करेगा 'प्रकार' कंपाइलर को निर्देश देने के लिए कि वह नया डेटा प्रकार बना रहा है।
- इसे यहां बनाया जा सकता है “डेटाबेस स्तर” जिसे डेटाबेस ऑब्जेक्ट के रूप में संग्रहीत किया जा सकता है, पूरे डेटाबेस में उपयोग किया जा सकता है या इसे “उपकार्यक्रम स्तर”, जो केवल उपप्रोग्राम के अंदर ही दिखाई देता है।
- डेटाबेस स्तर रिकॉर्ड प्रकार को तालिका स्तंभों के लिए भी घोषित किया जा सकता है ताकि एकल स्तंभ जटिल डेटा को धारण कर सके।
- इन डेटा प्रकार में डेटा को उनके variable_name के बाद अवधि ऑपरेटर (.) और उसके बाद column_name यानी ' का संदर्भ देकर एक्सेस किया जा सकता है। . '
डेटाबेस स्तर पर घोषणा के लिए सिंटैक्स:
CREATE TYPE <type_name_db> IS RECORD ( <column 1> <datatype>, );
पहले सिंटैक्स में, हम 'CREATE TYPE' कीवर्ड देख सकते हैं, यह कंपाइलर को डेटाबेस ऑब्जेक्ट के रूप में निर्दिष्ट कॉलम के साथ "type_name_db" नामक रिकॉर्ड प्रकार बनाने का निर्देश देता है।
यह एक व्यक्तिगत कथन के रूप में दिया गया है, किसी ब्लॉक के अन्दर नहीं।
उपप्रोग्राम स्तर पर घोषणा के लिए वाक्यविन्यास:
DECLARE TYPE <type_name> IS RECORD ( <columnl> <datatype>, ); BEGIN <execution_section>; END;
सिंटैक्स में, हम केवल सबप्रोग्राम के अंदर ही “type_name” नामक रिकॉर्ड प्रकार बना रहे हैं।
दोनों घोषणा पद्धति में कॉलम और डेटा प्रकार को परिभाषित करने का तरीका समान है।
उदाहरण 1: डेटाबेस ऑब्जेक्ट के रूप में RECORD प्रकार
इस प्रोग्राम में, हम देखेंगे कि डेटाबेस ऑब्जेक्ट के रूप में “रिकॉर्ड टाइप” कैसे बनाया जाता है। हम चार कॉलम के साथ रिकॉर्ड टाइप 'emp_det' बनाने जा रहे हैं। कॉलम और उनका डेटा टाइप इस प्रकार है:
- EMP_संख्या (संख्या)
- EMP_नाम (VARCHAR2 (150))
- प्रबंधक (संख्या)
- वेतन (संख्या)
CREATE TYPE emp_det IS OBJECT ( EMP_NO NUMBER, EMP_NAME VARCHAR2(150), MANAGER NUMBER, SALARY NUMBER ); /
आउटपुट:
Type created
कोड स्पष्टीकरण:
- उपरोक्त कोड डेटाबेस ऑब्जेक्ट के रूप में emp_det प्रकार बनाएगा।
- इसमें 4 कॉलम होंगे - emp_no, emp_name, manager और salary जैसा कि परिभाषित किया गया है।
- अब 'emp_det' अन्य के समान है डाटा प्रकार (जैसे NUMBER, VARCHAR@, आदि) और यह पूरे डेटाबेस में दिखाई देता है। इसलिए इस प्रकार के वेरिएबल को घोषित करने के लिए इसका उपयोग पूरे डेटाबेस में किया जा सकता है।
आउटपुट:
डेटाबेस स्तर पर रिकॉर्ड प्रकार के रूप में 'emp_det' प्रकार बनाया गया।
उदाहरण 2: सबप्रोग्राम स्तर पर रिकॉर्ड प्रकार- कॉलम स्तर पर पहुंच
इस उदाहरण में, हम देखेंगे कि उपप्रोग्राम स्तर पर रिकॉर्ड प्रकार कैसे बनाया जाए और कॉलम स्तर पर उसमें से मान कैसे भरे जाएं और प्राप्त किए जाएं।
हम उपप्रोग्राम स्तर पर 'emp_det' रिकॉर्ड_टाइप बनाने जा रहे हैं, और हम इसका उपयोग डेटा को पॉपुलेट करने और प्रदर्शित करने के लिए करने जा रहे हैं।
DECLARE TYPE emp_det IS RECORD ( EMP_NO NUMBER, EMP_NAME VARCHAR2(150), MANAGER NUMBER, SALARY NUMBER ); guru99_emp_rec emp_det; BEGIN guru99_emp_rec.emp_no:= 1001; guru99_emp_rec.emp_name:=:'XXX'; guru99_emp_rec.manager:= 1000; guru99_emp_rec.salary:=10000; dbms_output.put.line('Employee Detail'); dbms_output.put_line ('Employee Number: '||guru99_emp_rec.emp_no); dbms_output.put_line ('Employee Name: '||guru99_emp_rec.emp_name); dbms_output.put_line ('Employee Salary: ' ||guru99_emp_rec.salary); dbms_output.put_line ('Employee Manager Number: '||guru99_emp_rec.manager); END; /
आउटपुट:
Employee Detail Employee Number: 1001 Employee Name: XXX Employee Salary: 10000 Employee Manager Number: 1000
कोड स्पष्टीकरण:
- कोड लाइन 2-8: रिकॉर्ड प्रकार 'emp_det' को डेटा प्रकार NUMBER, VARCHAR2, NUMBER, NUMBER के स्तंभों emp_no, emp_name, salary और manager के साथ घोषित किया गया है।
- कोड पंक्ति 9: guru99_emp_rec चर को 'emp_det' डेटा प्रकार के रूप में घोषित किया गया है। अब यह परिवर्तनशील वह मान रख सकता है जिसमें उपरोक्त सभी 4 फ़ील्ड/कॉलम शामिल हों।
- कोड पंक्ति 11: 'guru99_emp_rec' के 'emp_no' फ़ील्ड को 1001 मान से पॉपुलेट किया जा रहा है।
- कोड पंक्ति 12: 'guru99_emp_rec' के 'emp_name' फ़ील्ड को XXX मान से पॉपुलेट किया जा रहा है।
- कोड पंक्ति 13: 'guru99_emp_rec' के 'manager' फ़ील्ड को 1000 मान से पॉपुलेट किया जा रहा है।
- कोड पंक्ति 14: 'guru99_emp_rec' के 'salary' फ़ील्ड को 10000 मान से पॉपुलेट किया जा रहा है।
- कोड पंक्ति 15-19: आउटपुट में 'guru99_emp_rec' का मान प्रदर्शित करना।
उदाहरण 3: सबप्रोग्राम स्तर पर रिकॉर्ड प्रकार-पंक्ति स्तर पहुँच
इस उदाहरण में, हम देखेंगे कि सबप्रोग्राम स्तर पर रिकॉर्ड प्रकार कैसे बनाया जाता है और इसे पंक्ति स्तर के रूप में कैसे पॉप्युलेट किया जाता है। हम सबप्रोग्राम स्तर पर 'emp_det' रिकॉर्ड_टाइप बनाने जा रहे हैं, और हम इसे पॉप्युलेट करने और इससे डेटा प्रदर्शित करने के लिए उपयोग करने जा रहे हैं।
DECLARE TYPE emp_det IS RECORD ( EMP_NO NUMBER, EMP_NAME YARCHAR2( 150), MANAGER NUMBER, SALARY NUMBER ); guru99_emp_rec emp_det; BEGIN INSERT INTO emp (emp_no, emp_name, salary, manager) VALUES (1002,'YYY',15000,1000); COMMIT; SELECT emp_no, emp_name, salary, manager INTO guru99_emp_rec FROM emp WHERE emp_no=1002; dbms_output.put_line (‘Employee Detail’); dbms_output.put_line (‘Employee Number: '||guru99_emp_rec.emp_no); dbms_output.put_line (‘Employee Name: '||guru99_emp_rec.emp_name); dbms_output.put_line (‘Employee Salary: '||guru99_emp_rec. salary); dbms_output.put_line (‘Employee Manager Number: '||guru99_emp_rec.manager); END; /
कोड स्पष्टीकरण:
- कोड लाइन 2-8: रिकॉर्ड प्रकार 'emp_det' को डेटा प्रकार NUMBER, VARCHAR2, NUMBER, NUMBER के स्तंभों emp_no, emp_name, salary और manager के साथ घोषित किया गया है।
- कोड पंक्ति 9: guru99_emp_rec वैरिएबल को 'emp_det' डेटा टाइप के रूप में घोषित किया गया है। अब यह वैरिएबल वह मान रख सकता है जिसमें उपरोक्त सभी 4 फ़ील्ड/कॉलम शामिल हैं।
- कोड पंक्ति 11: तालिका emp को डेटा 1002 को emp_no, YYY को emp_name, 15000 को वेतन और 1000 को प्रबंधक संख्या के रूप में भरना।
- कोड पंक्ति 12: उपरोक्त सम्मिलित लेनदेन को प्रतिबद्ध करना।
- कोड पंक्ति 13: कर्मचारी संख्या 99 के लिए चयन क्वेरी से पंक्ति स्तर डेटा के रूप में 'guru1002_emp_rec' चर को पॉप्युलेट करना।
- कोड पंक्ति 15-19: आउटपुट में 'guru99_emp_rec' का मान प्रदर्शित करना।
आउटपुट:
Employee Detail Employee Number: 1002 Employee Name: YYY Employee Salary: 1000 Employee Manager Number: 15000
नोट: रिकॉर्ड प्रकार तक केवल कॉलम स्तर पर ही पहुंचा जा सकता है, जबकि इसके मान को किसी भी आउटपुट मोड में पुनर्निर्देशित किया जा सकता है।