अब तक हमने देखा कि टेबल आधारित और कर्सर आधारित रिकॉर्ड डेटाटाइप वेरिएबल्स कैसे बनाते हैं। जो बचा है वह है यूजर डिफाइन रिकॉर्ड डेटाटाइप जिसे हम आज के ट्यूटोरियल में कवर करने जा रहे हैं।
जैसा कि नाम से पता चलता है, उपयोगकर्ता परिभाषित रिकॉर्ड रिकॉर्ड चर होते हैं जिनकी संरचना उपयोगकर्ता द्वारा परिभाषित की जाती है, जो तालिका आधारित या कर्सर आधारित रिकॉर्ड के विपरीत होती है, जिनकी संरचनाएं उनके संबंधित तालिकाओं या कर्सर से प्राप्त होती हैं। इसका मतलब है कि उपयोगकर्ता परिभाषित रिकॉर्ड के साथ आप अपने रिकॉर्ड चर की संरचना पर पूर्ण नियंत्रण प्राप्त कर सकते हैं।
उपयोगकर्ता परिभाषित रिकॉर्ड चर की निर्माण प्रक्रिया को दो भागों में विभाजित किया गया है। रिकॉर्ड को परिभाषित करने से पहले हमें पहले रिकॉर्ड वेरिएबल के लिए TYPE को परिभाषित करना होगा। यह प्रकार उपयोगकर्ता परिभाषित रिकॉर्ड चर का आधार बन जाएगा और इसकी संरचना को चलाने में मदद करेगा। एक बार जब TYPE को सफलतापूर्वक घोषित कर दिया जाता है तो हम इसका उपयोग अपने यूजर डिफाइन रिकॉर्ड वेरिएबल बनाने के लिए कर सकते हैं।
Oracle डेटाबेस में उपयोगकर्ता परिभाषित रिकॉर्ड का सिंटैक्स
उपयोगकर्ता परिभाषित रिकॉर्ड डेटाटाइप वैरिएबल के लिए TYPE बनाने के लिए सिंटैक्स नीचे दिया गया है।
TYPE type_name IS RECORD ( field_name1 datatype 1, field_name2 datatype 2, ... field_nameN datatype N );
एक बार जब हम अपना TYPE घोषित कर लेते हैं तो हम अपना रिकॉर्ड वेरिएबल बनाने के लिए पूरी तरह तैयार हैं। यह चर तब उस प्रकार के सभी गुणों को प्राप्त कर लेगा जिसके उपयोग से इसे बनाया गया है। और यहां उपयोगकर्ता को रिकॉर्ड डेटाटाइप वैरिएबल परिभाषित करने के लिए सिंटैक्स है।
record_name TYPE_NAME;
क्या आपने देखा कि टेबल आधारित या कर्सर आधारित रिकॉर्ड वेरिएबल के विपरीत हमें रिकॉर्ड वैरिएबल घोषित करने के लिए %ROWTYPE विशेषता का उपयोग करने की आवश्यकता नहीं है?
उपरोक्त सिंटैक्स की विस्तृत व्याख्या के लिए आप मेरे YouTube चैनल पर वीडियो ट्यूटोरियल देख सकते हैं।
उदाहरण:उपयोगकर्ता परिभाषित रिकॉर्ड डेटाटाइप वैरिएबल कैसे बनाएं।
चरण 1:उपयोगकर्ता परिभाषित रिकॉर्ड चर के लिए प्रकार घोषित करें
SET SERVEROUTPUT ON; DECLARE TYPE rv_dept IS RECORD( f_name VARCHAR2(20), d_name DEPARTMENTS.department_name%TYPE );
चरण 2:उपयोगकर्ता परिभाषित रिकॉर्ड चर घोषित करें
TYPE बनाने के बाद आप अपना उपयोगकर्ता परिभाषित रिकॉर्ड वैरिएबल बनाने के लिए पूरी तरह तैयार हैं।
var1 rv_dept;
यह उपरोक्त PL/SQL स्टेटमेंट VAR1 नाम के साथ एक रिकॉर्ड वेरिएबल बनाएगा।
चरण 3:उपयोगकर्ता परिभाषित रिकॉर्ड चर को प्रारंभ करें।
उपयोगकर्ता परिभाषित रिकॉर्ड चर को कई तरीकों से आरंभ किया जा सकता है। उदाहरण के लिए आप असाइनमेंट वेरिएबल का उपयोग करके रिकॉर्ड वैरिएबल को सीधे मान निर्दिष्ट करके प्रारंभ कर सकते हैं या आप SELECT-INTO कथन का उपयोग करके तालिका के कॉलम में संग्रहीत मान प्राप्त कर सकते हैं। तो चलिए अपने उदाहरण के साथ आगे बढ़ते हैं और सीखते हैं कि SELECT-INTO स्टेटमेंट का उपयोग करके उपयोगकर्ता द्वारा परिभाषित रिकॉर्ड वेरिएबल को कैसे इनिशियलाइज़ किया जाए।
आगे मैं निष्पादन अनुभाग लिखूंगा। निष्पादन अनुभाग में हमारे पास एक चयन विवरण होगा जो कर्मचारियों की तालिका और विभागों की तालिका में शामिल होगा और विशिष्ट कर्मचारी का पहला नाम और विभाग का नाम लौटाएगा।
BEGIN SELECT first_name , department_name INTO var1.f_name, var1.d_name FROM employees join departments Using (department_id) WHERE employee_id = 100; DBMS_OUTPUT.PUT_LINE(var1.f_name||' '||var1.d_name); END;
हमारे यहां जो सेलेक्ट स्टेटमेंट है, वह उस कर्मचारी का पहला नाम और विभाग का नाम लौटाएगा, जिसकी कर्मचारी आईडी 100 है। दोनों कॉलम का डेटा अलग-अलग टेबल से आ रहा है, इसलिए हमने यहां जॉइन का इस्तेमाल किया। चूंकि क्वेरी में दो अलग-अलग टेबल शामिल हैं, इसलिए ऐसी स्थिति में टेबल बेस्ड रिकॉर्ड वेरिएबल का उपयोग संभव नहीं है, इसलिए व्यवहार्य समाधान उपयोगकर्ता परिभाषित रिकॉर्ड वेरिएबल है।
आइए उपरोक्त सभी कोडों को एक साथ एक अनाम PL/SQL ब्लॉक में शामिल करें।
SET SERVEROUTPUT ON; DECLARE TYPE rv_dept IS RECORD( f_name VARCHAR2(20), d_name departments.department_name%type ); var1 rv_dept; BEGIN SELECT first_name , department_name INTO var1.f_name, var1.d_name FROM employees join departments Using (department_id) WHERE employee_id = 100; DBMS_OUTPUT.PUT_LINE(var1.f_name||' '||var1.d_name); END; /
इस तरह हम Oracle डेटाबेस में एक User Defined Record Datatype Variable बनाते हैं। आशा है आपको पढ़कर अच्छा लगा होगा और कुछ नया सीखा होगा। इसके अलावा, मैं हर महीने एक बेतरतीब ढंग से चुने गए विजेता को रिबेलियनराइडर का माल दे रहा हूं, इसलिए इस ब्लॉग को अपने दोस्तों के साथ अपने सामाजिक पर साझा करना सुनिश्चित करें।
बस इतना ही धन्यवाद और आपका दिन शुभ हो!