रिकॉर्ड प्रकार क्या है?
एक रिकॉर्ड प्रकार एक जटिल डेटा प्रकार है जो प्रोग्रामर को वांछित कॉलम संरचना के साथ एक नया डेटा प्रकार बनाने की अनुमति देता है।
- यह एक नया डेटा प्रकार बनाने के लिए एक या अधिक कॉलम को समूहित करता है
- इन स्तंभों का अपना नाम और डेटा प्रकार होगा
- एक रिकॉर्ड प्रकार डेटा को स्वीकार कर सकता है
- एक एकल रिकॉर्ड के रूप में जिसमें कई कॉलम हैं या
- यह एक रिकॉर्ड के एक विशेष कॉलम के लिए मूल्य को स्वीकार कर सकता है
- रिकॉर्ड प्रकार का सीधा मतलब है एक नया डेटा प्रकार। एक बार रिकॉर्ड प्रकार तैयार हो जाने के बाद, इसे डेटाबेस में एक नए डेटा प्रकार के रूप में संग्रहीत किया जाएगा और इसे कार्यक्रमों में एक चर घोषित करने के लिए उपयोग किया जाएगा।
- यह कंपाइलर को निर्देश देने के लिए 'टाइप' का उपयोग करेगा कि वह नया डेटा टाइप बना रहा है।
- इसे " डेटाबेस स्तर" पर बनाया जा सकता है जिसे डेटाबेस ऑब्जेक्ट के रूप में संग्रहीत किया जा सकता है, डेटाबेस का उपयोग किया जा सकता है या इसे " सबप्रोग्राम स्तर" पर बनाया जा सकता है , जो केवल उपप्रोग्राम के अंदर दिखाई देता है।
- डेटाबेस स्तर रिकॉर्ड प्रकार को टेबल कॉलम के लिए भी घोषित किया जा सकता है ताकि एकल कॉलम जटिल डेटा को पकड़ सके।
- इन डेटा प्रकारों में डेटा को उनके वैरिएबल_नाम का संदर्भ देते हुए एक्सेस किया जा सकता है, इसके बाद पीरियड ऑपरेटर ()।
डेटाबेस स्तर पर घोषणा के लिए सिंटैक्स:
CREATE TYPEIS RECORD( ,);
पहले सिंटैक्स में, हम 'क्रीएट टाइप' कीवर्ड देख सकते हैं, यह कंपाइलर को एक डेटाबेस ऑब्जेक्ट के रूप में निर्दिष्ट कॉलम के साथ "type_name_db" नामक रिकॉर्ड प्रकार बनाने के लिए निर्देश देता है।
यह एक व्यक्तिगत विवरण के रूप में दिया गया है और किसी भी ब्लॉक के अंदर नहीं।
उपप्रोग्राम स्तर पर घोषणा के लिए सिंटैक्स:
DECLARETYPEIS RECORD( ,);BEGIN ;END;
सिंटैक्स में, हम "type_name" नाम के रिकॉर्ड प्रकार को केवल उपप्रोग्राम के अंदर बना रहे हैं।
दोनों घोषणा पद्धति में, स्तंभ और डेटा प्रकार को परिभाषित करने का तरीका समान है।
उदाहरण 1: RECORD प्रकार डेटाबेस ऑब्जेक्ट के रूप में
इस कार्यक्रम में, हम एक डेटाबेस ऑब्जेक्ट के रूप में "रिकॉर्ड प्रकार" बनाने का तरीका देखने जा रहे हैं। हम चार कॉलम के साथ रिकॉर्ड प्रकार 'एम्प_डेट' बनाने जा रहे हैं। कॉलम और उनके डेटा प्रकार इस प्रकार हैं:
- EMP_NO (NUMBER)
- EMP_NAME (VARCHAR2 (150))
- प्रबंधक (संख्या)
- सैलरी (NUMBER)
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, मैनेजर और वेतन परिभाषित होगा।
- अब 'emp_det' अन्य डेटा प्रकार (जैसे NUMBER, VARCHAR @, आदि) के समान है और यह पूरे डेटाबेस में दिखाई देता है। इसलिए यह इस प्रकार के चर को घोषित करने के लिए पूरे डेटाबेस में उपयोग किया जा सकता है।
आउटपुट:
डेटाबेस स्तर पर रिकॉर्ड प्रकार के रूप में 'emp_det' बनाया गया।
उदाहरण 2: रिकॉर्ड प्रकार सबप्रोग्राम स्तर पर- स्तंभ स्तर पहुंच
इस उदाहरण में, हम यह देखने जा रहे हैं कि उपप्रोग्राम स्तर पर एक रिकॉर्ड प्रकार कैसे बनाया जाए और कॉलम स्तर से इसके मूल्यों को कैसे पॉप्युलेट और प्राप्त किया जाए।
हम सबप्रोग्राम स्तर पर 'emp_det' record_type बनाने जा रहे हैं, और हम इसका उपयोग करने और इससे डेटा प्रदर्शित करने के लिए जा रहे हैं।
DECLARETYPE emp_det IS RECORD(EMP_NO NUMBER,EMP_NAME VARCHAR2(150),MANAGER NUMBER,SALARY NUMBER);guru99_emp_rec emp_det;BEGINguru99_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 DetailEmployee Number: 1001Employee Name: XXXEmployee Salary: 10000Employee Manager Number: 1000
कोड स्पष्टीकरण:
- कोड लाइन 2-8 : रिकॉर्ड प्रकार 'emp_det' को कॉलम emp_no, emp_name, वेतन और डेटा प्रकार NUMBER, VARCHAR2, NUMBER, NUMBER के प्रबंधक के साथ घोषित किया जाता है।
- कोड लाइन 9: guru99_emp_rec चर को 'emp_det' डेटा प्रकार के रूप में घोषित किया जाता है। अब यह चर उस मान को पकड़ सकता है जिसमें उपरोक्त सभी 4 फ़ील्ड / कॉलम हैं।
- कोड लाइन 11: मान 1001 के साथ 'guru99_emp_rec' के 'emp_no' फ़ील्ड को पॉप्युलेट करना।
- कोड पंक्ति 12: 'XXX' के 'emp_name' फ़ील्ड को 'XXX' मान के साथ पॉप्युलेट करना।
- कोड लाइन 13: 1000 के मान वाले 'guru99_emp_rec' के 'प्रबंधक' क्षेत्र को आबाद करना।
- कोड लाइन 14: 'गुरु 99_emp_rec' के 'वेतन' क्षेत्र को मूल्य 10000 से आबाद करना।
- कोड लाइन 15-19: आउटपुट में 'guru99_emp_rec' का मान प्रदर्शित करना।
उदाहरण 3: रिकॉर्ड प्रकार सबप्रोग्राम स्तर-पंक्ति स्तर पहुंच पर
इस उदाहरण में, हम यह देखने जा रहे हैं कि उपप्रोग्राम स्तर पर रिकॉर्ड प्रकार कैसे बनाएं और इसे पंक्ति स्तर के रूप में कैसे पॉपुलेट करें। हम सबप्रोग्राम स्तर पर 'emp_det' record_type बनाने जा रहे हैं, और हम इसका उपयोग करने और इससे डेटा प्रदर्शित करने के लिए जा रहे हैं।
DECLARETYPE emp_det IS RECORD(EMP_NO NUMBER,EMP_NAME YARCHAR2( 150),MANAGER NUMBER,SALARY NUMBER);guru99_emp_rec emp_det;BEGININSERT 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' को कॉलम emp_no, emp_name, वेतन और डेटा प्रकार NUMBER, VARCHAR2, NUMBER, NUMBER के प्रबंधक के साथ घोषित किया जाता है।
- कोड लाइन 9: guru99_emp_rec चर को 'emp_det' डेटा प्रकार के रूप में घोषित किया जाता है। अब यह चर उस मान को पकड़ सकता है जिसमें उपरोक्त सभी 4 फ़ील्ड / कॉलम हैं।
- कोड पंक्ति 11: एम्पायर के रूप में डेटा 1002 के साथ टेबल एम्प को पॉप्युलेट करना, एम्पायर के रूप में YYY, 15000 वेतन के रूप में और 1000 प्रबंधक संख्या के रूप में।
- कोड लाइन 12: उपरोक्त सम्मिलित लेन-देन करना।
- कोड पंक्ति 13: कर्मचारी संख्या 1002 के लिए चयनित क्वेरी से पंक्ति स्तर डेटा के रूप में 'guru99_emp_rec' चर को पॉप्युलेट करना।
- कोड लाइन 15-19: आउटपुट में 'guru99_emp_rec' का मान प्रदर्शित करना।
आउटपुट:
Employee DetailEmployee Number: 1002Employee Name: YYYEmployee Salary: 1000Employee Manager Number: 15000
नोट: किसी भी आउटपुट मोड में इसके मूल्य को पुनर्निर्देशित करते हुए रिकॉर्ड प्रकार को केवल कॉलम स्तर में ही एक्सेस किया जा सकता है।