Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

Oracle में विभिन्न प्रकार के PL/SQL संग्रह का उपयोग करने का उद्देश्य

आइए नेस्टेड टेबल्स से शुरू करें, वे संग्रह का सबसे सामान्य रूप हैं और इसलिए तुलना के उपयोगी आधार का प्रतिनिधित्व करते हैं।

एक नेस्टेड टेबल एक वेरिएबल है जो किसी चीज़ के एक से अधिक इंस्टेंस को पकड़ सकता है, अक्सर डेटाबेस टेबल से एक रिकॉर्ड। उन्हें इस तरह घोषित किया जा सकता है:

type emp_nt is table of emp%rowtype;
emp_rec_nt emp_nt;

जब भी हम डेटा के कई उदाहरणों को संग्रहीत करना चाहते हैं तो वे उपयोगी होते हैं, जिसके खिलाफ हम एक ही काम करना चाहते हैं। एक से अधिक रिकॉर्ड संग्रहीत करने के लिए BULK COLLECT का उपयोग क्लासिक उदाहरण है:

select * 
bulk collect into emp_rec_nt
from employees;

यह हमें डेटा का एक स्रोत देता है जिसे हम गोल कर सकते हैं; महत्वपूर्ण रूप से हम पीछे की ओर और साथ ही आगे की ओर नेविगेट कर सकते हैं, यहां तक ​​कि अंत या शुरुआत तक भी जा सकते हैं, जो ऐसी चीजें हैं जो हम एक कर्सर के साथ नहीं कर सकते हैं। नेस्टेड टेबल किसी भी डेटा प्रकार का संग्रह हो सकता है, जिसमें पीएल/एसक्यूएल रिकॉर्ड या उपयोगकर्ता-परिभाषित प्रकार जैसे कंपोजिट शामिल हैं।

एक इंडेक्स बाय टेबल को बेहतर कहा जाता है (जैसा कि डॉक्स करते हैं) एक एसोसिएटिव ऐरे। ये एकल विशेषताओं . के साधारण संग्रह हैं एक सूचकांक के साथ। नेस्टेड टेबल में इंडेक्स भी होते हैं लेकिन उनके इंडेक्स सिर्फ रो काउंट होते हैं। एक सहयोगी सरणी के साथ सूचकांक सार्थक हो सकता है, यानी डेटा मान से प्राप्त किया जा सकता है। इसलिए वे बाद में उपयोग के लिए डेटा मानों को कैशिंग करने के लिए उपयोगी हैं। सूचकांक एक संख्या हो सकती है, या (9iR2 के बाद से) एक स्ट्रिंग जो बहुत उपयोगी हो सकती है। उदाहरण के लिए, यहां वेतन की एक सहयोगी सरणी है जिसे कर्मचारी पहचानकर्ता द्वारा अनुक्रमित किया जाता है।

type emp_sal_aa is table of emp.sql%type
     index by emp.empno%type;
l_emp_sales emp_sal_aa;

ध्यान दें कि मैं BINARY_INTEGER द्वारा INDEX का उपयोग करके उस सरणी को घोषित कर सकता था लेकिन इसके बजाय% TYPE सिंटैक्स का उपयोग करना स्पष्ट है (स्व-दस्तावेज़ीकरण कोड)। उस सरणी के तत्वों को एक सूचकांक मान द्वारा पहचाना जा सकता है, इस मामले में EMPNO:

l_emp_sals(l_emp_no) := l_emp_sal;

संदर्भ तालिकाओं या समान लुक-अप मानों को कैशिंग करने के अलावा सहयोगी सरणियों के लिए कई उपयोग के मामले नहीं हैं।

चर सरणियाँ केवल नेस्टेड तालिकाएँ हैं जिनमें तत्वों की संख्या पर पूर्व-निर्धारित सीमा होती है। तो शायद नाम भ्रामक है:वे वास्तव में निश्चित सरणियाँ हैं। VArrays के साथ हम बहुत कम कर सकते हैं जो हम नेस्टेड टेबल के साथ नहीं कर सकते हैं (तत्वों की संख्या को सीमित करने के अलावा और यह बहुत दुर्लभ है कि हम ऐसा करना चाहते हैं)। उन्हें इस तरह घोषित किया जाता है:

type emp_va is varray(14) of emp%rowtype;
emp_rec_va emp_va;

हम VArray को पॉप्युलेट करने के लिए बल्क कलेक्ट का उपयोग कर सकते हैं ...

select * 
bulk collect into emp_rec_va
from employees;

हालांकि हमें निश्चित होना चाहिए कि क्वेरी अधिक से अधिक वापस आएगी VArray की घोषणा में निर्दिष्ट तत्वों की संख्या। अन्यथा SELECT ORA-22165 को नुकसान पहुंचाएगा।

चर सरणियों के लिए कोई ज्ञात उपयोग के मामले नहीं हैं। ठीक है, यह थोड़ा कठोर है, लेकिन लगभग हर समय आप इसके बजाय नेस्टेड टेबल का उपयोग करेंगे। नेस्टेड टेबल पर VArrays का एक बड़ा फायदा यह है कि वे तत्वों के क्रम की गारंटी देते हैं। इसलिए यदि आपको तत्वों को उसी क्रम में प्राप्त करना है जैसे आपने उन्हें डाला है तो VArray का उपयोग करें।

पीएल/एसक्यूएल दस्तावेज संग्रह के लिए एक संपूर्ण अध्याय समर्पित करता है। और जानें।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle कई स्तंभों को एक में मिलाता है

  2. क्या किसी विशिष्ट मान के लिए अल्पविराम से अलग किए गए कॉलम को क्वेरी करना संभव है?

  3. Oracle में REPLACE () फ़ंक्शन

  4. SQLcl स्वरूपण विकल्प (ओरेकल)

  5. ओआरए-38868