हे लोगों! आज हम सीखेंगे कि यूजर-डिफाइन डेटाटाइप का उपयोग करके नेस्टेड टेबल टाइप कलेक्शन कैसे बनाया जाता है। आशा है कि आपके पास पिछले ट्यूटोरियल के साथ बहुत अच्छा समय था जहां हमने आदिम डेटाटाइप के साथ नेस्टेड टेबल की निर्माण प्रक्रिया सीखी थी। मैं आपको अत्यधिक सुझाव देता हूं कि आप उस ट्यूटोरियल को देखें क्योंकि हम वहां से अवधारणाओं का उपयोग करने जा रहे हैं।
आदिम डेटाटाइप के समान उपयोगकर्ता परिभाषित डेटाटाइप का उपयोग करके एक नेस्टेड तालिका भी बनाई जा सकती है। प्रदर्शन के लिए हम उपयोगकर्ता Oracle ऑब्जेक्ट का उपयोग करेंगे। यदि आपने कभी ओओपी अवधारणाओं का अध्ययन किया है तो वस्तुओं को किसी परिचय की आवश्यकता नहीं है। Oracle में, अन्य प्रोग्रामिंग भाषाओं की तरह, ऑब्जेक्ट टाइप एक प्रकार का डेटाटाइप है जो अन्य डेटाटाइप जैसे कि चार, वर्चर 2, नंबर आदि की तरह ही काम करता है, लेकिन अधिक लचीलेपन के साथ।
Oracle ऑब्जेक्ट बनाने के लिए हम अपने पुराने और भरोसेमंद 'क्रिएट टाइप' स्टेटमेंट का उपयोग करते हैं।
CREATE OR REPLACE TYPE object_type AS OBJECT ( obj_id NUMBER, obj_name VARCHAR2(10) ); /
उपरोक्त कथन सफल निष्पादन पर दो विशेषताओं obj_id और obj_name के साथ 'ऑब्जेक्ट प्रकार' नाम के साथ एक ऑरैकल ऑब्जेक्ट बनाएगा। इस डेटाटाइप का उपयोग नेस्टेड टेबल बनाने के लिए किया जा सकता है।
CREATE OR REPLACE TYPE My_NT IS TABLE OF object_type; /
मुझे लगता है कि यदि आपने पिछले ट्यूटोरियल की जाँच की है तो आपको यह उपरोक्त कथन बहुत परिचित मिलेगा, सिवाय उस तत्व प्रकार के जो वहाँ एक आदिम डेटाटाइप है। यहां हम एक उपयोगकर्ता-परिभाषित डेटाटाइप का उपयोग करते हैं जो एक Oracle ऑब्जेक्ट है।
उपरोक्त कथन को पिछले ट्यूटोरियल में विस्तार से समझाया गया है जिसे आप यहां देख सकते हैं।
Oracle Object का उपयोग करके नेस्टेड तालिका बनाने का क्या अर्थ है?
जब भी आप Oracle ऑब्जेक्ट का उपयोग करके नेस्टेड टेबल बनाते हैं तो ऑब्जेक्ट के गुण उस टेबल के कॉलम बन जाते हैं। उदाहरण के लिए, हमारे मामले में हमने उपयोगकर्ता-परिभाषित डेटाटाइप का उपयोग करके एक नेस्टेड तालिका 'My_NT' बनाई है जो एक Oracle ऑब्जेक्ट 'Object_Type' है जिसमें दो विशेषताएँ obj_id और obj_name हैं। वस्तु की ये दो विशेषताएँ तालिका के स्तंभों के रूप में कार्य करेंगी। निम्नलिखित तस्वीर आपको इसे और अधिक स्पष्ट रूप से समझने में मदद करेगी।
अब जब हमने उपयोगकर्ता-परिभाषित डेटाटाइप का उपयोग करके नेस्टेड तालिका बना ली है, तो इसे किसी काम में लगाने का समय आ गया है।
CREATE TABLE Base_Table( tab_id NUMBER, tab_ele My_NT )NESTED TABLE tab_ele STORE AS stor_tab_1; /
'बेस_टेबल' नाम की उपरोक्त तालिका एक साधारण है जिसमें 2 कॉलम 'टैब_आईडी' और 'टैब_एले' हैं। पहला कॉलम नंबर डेटाटाइप का है जबकि दूसरा कॉलम नेस्टेड टेबल टाइप का है। इसका मतलब है कि दूसरे कॉलम में एक टेबल है और वह टेबल हमारी नेस्टेड टेबल 'My_Nt' है
हालांकि यह 'बेस_टेबल' एक साधारण टेबल है, लेकिन इसके एक कॉलम में एक नेस्टेड टेबल है, जिससे कुछ सवाल उठते हैं जैसे:
तालिका में डेटा कैसे सम्मिलित करें? तालिका के डेटा को कैसे अपडेट करें? या तालिका से डेटा कैसे प्राप्त करें? आइए एक बार में इन सभी सवालों के जवाब खोजने की कोशिश करें।
नेस्टेड तालिका में डेटा कैसे सम्मिलित करें?
हां, मैं मानता हूं कि एक टेबल में डेटा डालना जिसमें नेस्टेड टेबल टाइप का कॉलम हो, मुश्किल हो सकता है लेकिन किसी तरह हमें इसे करने का तरीका खोजना होगा। डेटा के बिना तालिका के रूप में हमारे लिए किसी काम का नहीं है। सही? आइए देखें कि हम यह कैसे कर सकते हैं।
INSERT INTO base_table (tab_id, tab_ele) VALUES (801, -- value for 1st colum My_NT (object_type (1,'Superman') -- values for 2nd column ) );
जैसा कि आप इस INSERT स्टेटमेंट में देख सकते हैं कि लाइन नंबर 3 को छोड़कर जहां हम टेबल के दूसरे कॉलम में डेटा डाल रहे हैं, सब कुछ सामान्य इन्सर्ट डीएमएल जैसा ही है। नेस्टेड टेबल प्रकार के कॉलम में डेटा डालने के लिए आपको सबसे पहले अपनी नेस्टेड टेबल का नाम लिखना होगा जो इस मामले में 'My_NT' है, फिर आपको अपने Oracle ऑब्जेक्ट का नाम लिखना होगा जो यहां 'Object_Type' है। उसके बाद वे मान जो आप अपनी तालिका में सम्मिलित करना चाहते हैं। तालिका के नाम और वस्तु के नाम के लिए कोष्ठक का मिलान करना न भूलें, अन्यथा आपको एक त्रुटि मिलेगी।
नेस्टेड तालिका के मान कैसे अपडेट करें?
UPDATE base_table SET tab_ele = My_NT(object_type(1,'SpiderMan')) WHERE tab_id = 801;
उपरोक्त डीएमएल स्टेटमेंट सफल निष्पादन के अनुसार मूल्यों को अपडेट करेगा।
नेस्टेड तालिका से डेटा कैसे प्राप्त करें?
डेटा प्राप्त करने के लिए आप बस अपनी टेबल पर सेलेक्ट स्टेटमेंट को निष्पादित कर सकते हैं।
Select tab_id, tab_ele FROM base_table;
निम्न चित्र आपको इस तालिका से प्राप्त परिणाम दिखाएगा।
जैसा कि आप देख सकते हैं कि यह सेलेक्ट स्टेटमेंट आपको उन कॉलम से डेटा दिखाएगा जो प्राथमिक डेटाटाइप के हैं, लेकिन केवल आपके नेस्टेड टेबल का नाम और कॉलम से Oracle ऑब्जेक्ट जिसे आप नेस्टेड टेबल टाइप के रूप में परिभाषित करते हैं। आप इस तरह से टेबल एक्सप्रेशन का उपयोग करके इस समस्या को आसानी से दूर कर सकते हैं।
SELECT * FROM TABLE( SELECT tab_ele FROM Base_Table WHERE tab_id = 801 )
उपरोक्त क्वेरी का सफल निष्पादन आपको आपकी तालिका के दूसरे कॉलम 'Base_Table' से एक संबंधपरक प्रारूप में डेटा दिखाएगा।
इस ट्यूटोरियल के लिए बस इतना ही आशा है कि आपने आनंद लिया और कुछ नया सीखा। सब्सक्राइब और साइन अप करना सुनिश्चित करें। आपका दिन शुभ हो!