Oracle में, एक नेस्टेड टेबल को डेटाबेस कॉलम के रूप में स्टोर किया जा सकता है। इसका मतलब है कि संपूर्ण नेस्टेड तालिका डेटाबेस तालिका की एक पंक्ति में समाहित है, और डेटाबेस की प्रत्येक पंक्ति में एक अलग नेस्टेड तालिका हो सकती है। डेटाबेस में नेस्टेड टेबल को स्टोर करने के लिए, आपको CREATE TYPE
. का उपयोग करना चाहिए पीएल/एसक्यूएल ब्लॉक में टाइप स्टेटमेंट के बजाय नेस्टेड टेबल टाइप बनाने के लिए स्टेटमेंट।
CREATE TYPE
. का उपयोग करके , प्रकार डेटा डिक्शनरी में संग्रहीत है और इस प्रकार कॉलम प्रकार के रूप में उपयोग के लिए उपलब्ध है। निम्न उदाहरण दिखाता है कि नेस्टेड तालिका को डेटाबेस कॉलम के रूप में कैसे बनाया जाए।
Oracle PL/SQL - डेटाबेस में नेस्टेड टेबल बनाना
CREATE TYPE BookObj AS OBJECT ( title VARCHAR2(40), author VARCHAR2(40), catalog_number NUMBER(4) ); CREATE TYPE BookList AS TABLE OF BookObj; CREATE TABLE course_material ( department CHAR(3), course NUMBER(3), required_reading BookList ) NESTED TABLE required_reading STORE AS required_tab;
उपरोक्त लिस्टिंग और डेटाबेस में नेस्टेड टेबल बनाने के बारे में ध्यान देने योग्य कई बातें हैं:
- तालिका प्रकार को
CREATE TYPE
. के साथ डिज़ाइन किया गया है स्टेटमेंट ताकि इसे डेटा डिक्शनरी में स्टोर किया जा सके। - टेबल की परिभाषा में टेबल टाइप का इस्तेमाल किया जाता है, बिल्कुल कॉलम ऑब्जेक्ट की तरह।
- किसी दिए गए डेटाबेस तालिका में प्रत्येक नेस्टेड तालिका के लिए,
NESTED TABLE
उपवाक्य की आवश्यकता है। यह क्लॉज स्टोर टेबल के नाम को दर्शाता है।
एक स्टोर टेबल एक सिस्टम-जनरेटेड टेबल है जिसका उपयोग नेस्टेड टेबल में वास्तविक डेटा को स्टोर करने के लिए किया जाता है। यह डेटा शेष तालिका स्तंभों के साथ इनलाइन संग्रहीत नहीं है; इसे अलग से संग्रहित किया जाता है।
required_reading
कॉलम एक REF
स्टोर करेगा required_tab
. में तालिका, जहां पुस्तकों की सूची संग्रहीत की जाएगी। course_material
. की प्रत्येक पंक्ति के लिए , आवश्यक_रीडिंग में आवश्यक_टैब में संबंधित पंक्तियों के लिए एक आरईएफ होता है।
नोट
<ब्लॉकक्वॉट>
स्टोर टेबल (required_tab
उपरोक्त उदाहरण में) किसी अन्य स्कीमा में मौजूद हो सकता है और मुख्य तालिका से अलग भंडारण पैरामीटर हो सकता है। स्टोर टेबल का वर्णन किया जा सकता है, और user_tables
. में मौजूद है , लेकिन सीधे पहुँचा नहीं जा सकता।
यदि आप सीधे स्टोर टेबल को क्वेरी या संशोधित करने का प्रयास करते हैं, तो आपको Oracle त्रुटि मिलेगी "ORA-22812:नेस्टेड टेबल कॉलम की स्टोरेज टेबल को संदर्भित नहीं कर सकता"। स्टोर टेबल की सामग्री को मुख्य टेबल पर SQL के माध्यम से हेरफेर किया जाता है।
यह भी देखें:
- Oracle PL/SQL - संग्रह (नेस्टेड टेबल)