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

Oracle डेटाबेस में साहचर्य Arrays कैसे बनाएँ?

सहयोगी सरणी को पहले पीएल/एसक्यूएल 2 (पीएल/एसक्यूएल संस्करण जो ओरेकल 7 के साथ आया था) में पीएल/एसक्यूएल टेबल और ओरेकल 8 डेटाबेस में इंडेक्स-बाय-टेबल के रूप में जाना जाता है। Nested Table और VARRAYs के बाद, साहचर्य सरणी तीसरे प्रकार का संग्रह है जो डेवलपर्स द्वारा व्यापक रूप से उपयोग किया जाता है।

आइए साहचर्य सरणी के बारे में कुछ प्रश्नों के उत्तर खोजें जो आपको उन्हें बेहतर ढंग से समझने में मदद करेंगे। इस खंड में आप एसोसिएटिव ऐरे और अन्य संग्रह जैसे VARRAY और नेस्टेड टेबल्स के बीच कुछ मुख्य अंतर और समानताएं भी पाएंगे।

सहयोगी सरणियाँ बाध्य हैं या असीमित हैं?

नेस्टेड तालिकाओं के समान, सहयोगी सरणियाँ संग्रह के असीमित रूप हैं। इसका मतलब यह है कि यह धारण करने वाले तत्वों की संख्या पर कोई ऊपरी सीमा नहीं है। VARRAYs के लिए भी यही सच नहीं है क्योंकि वेरिएबल सरणियाँ प्रकृति में बंधी हुई हैं।

सहयोगी सरणियाँ स्थायी हैं या गैर-निरंतर?

नेस्टेड टेबल और VARRAYs के विपरीत, सहयोगी सरणियाँ संग्रह के गैर-स्थायी रूप हैं . इसका मतलब है कि न तो सरणी और न ही डेटा डेटाबेस में संग्रहीत किया जा सकता है लेकिन वे केवल पीएल/एसक्यूएल ब्लॉक में उपलब्ध हैं।

सहयोगी सरणियाँ विरल या सघन हैं?

जबकि VARRAYs घनी आबादी वाली सरणियाँ हैं, नेस्टेड टेबल और एसोसिएटिव एरेज़ कम आबादी वाले सरणियाँ हैं जिसका मतलब है कि सबस्क्रिप्ट नंबरिंग अद्वितीय होनी चाहिए लेकिन जरूरी नहीं कि अनुक्रमिक हो।

क्या हम डेटाबेस ऑब्जेक्ट के रूप में साहचर्य सरणी बना सकते हैं?

उनके गैर-निरंतर प्रकृति के कारण साहचर्य सरणियों को स्कीमा में संग्रहीत नहीं किया जा सकता है। वे केवल PL/SQL ब्लॉक में बनाए जा सकते हैं लेकिन डेटाबेस ऑब्जेक्ट के रूप में स्कीमा स्तर पर नहीं।

क्या हम सहयोगी सरणी का पुन:उपयोग कर सकते हैं?

जैसा कि ऊपर बताया गया है सहयोगी सरणी एक गैर-निरंतर संग्रह है जिसे स्कीमा स्तर पर नहीं बनाया जा सकता है इसलिए इसे स्कीमा में संग्रहीत नहीं किया जा सकता है इसलिए इसका पुन:उपयोग नहीं किया जा सकता है।

एसोसिएटिव एरे में इंडेक्स नंबरिंग/सबस्क्रिप्ट नंबरिंग निहित है या स्पष्ट?

नेस्टेड टेबल्स और VARRAYs के विपरीत, साहचर्य सरणी में अनुक्रमण स्पष्ट है। जहां Oracle इंजन नेस्टेड टेबल के तत्वों और पृष्ठभूमि में निहित रूप से VARRAY संग्रह के लिए सबस्क्रिप्ट/इंडेक्स नंबर निर्दिष्ट करता है, सहयोगी सरणी में उपयोगकर्ताओं को संग्रह को पॉप्युलेट करते समय स्पष्ट रूप से इंडेक्स नंबर निर्दिष्ट करना होता है।

एसोसिएटिव एरे में डेटा कैसे स्टोर होता है?

एसोसिएटिव ऐरे डेटा को की-वैल्यू पेयर में स्टोर करता है जहां इंडेक्स नंबर कुंजी के रूप में कार्य करता है और सेल में संग्रहीत डेटा मान के रूप में कार्य करता है।

ये कुछ मुख्य प्रश्न हैं जिनकी आप अपनी परीक्षा या साक्षात्कार में अपेक्षा कर सकते हैं। सहयोगी सरणियों और अन्य संग्रहों के बीच तकनीकी अंतर जानने के लिए पढ़ें।

पीएल/एसक्यूएल संग्रह को परिभाषित करें – सहयोगी सरणी?
उपरोक्त प्रश्नों से प्राप्त जानकारी का उपयोग करके हम एसोसिएटिव एरेज़ को एक-आयामी, समरूप संग्रह के रूप में परिभाषित कर सकते हैं जो डेटा को की-वैल्यू पेयर में संग्रहीत करता है। यह प्रकृति में विरल, असीम और गैर-स्थायी है।

PL/SQL सहयोगी सरणी का सिंटैक्स क्या है?

TYPE aArray_name IS TABLE OF element_datatype [Not Null]
INDEX BY index_elements_datatype;

जैसा कि ऊपर कहा गया है कि सहयोगी सरणी गैर-निरंतर प्रकार का संग्रह है, इसलिए इसे स्टैंडअलोन डेटाबेस ऑब्जेक्ट के रूप में नहीं बनाया जा सकता है, इसलिए अन्य संग्रहों की तरह इसका पुन:उपयोग नहीं किया जा सकता है। यह केवल PL/SQL ब्लॉक में उपलब्ध हो सकता है। हमेशा सुनिश्चित करें कि आप अपने PL/SQL ब्लॉक के DELCARATION अनुभाग में अपना सहयोगी सरणी बनाते हैं। [पीएल/एसक्यूएल ब्लॉक में कितने सेक्शन होते हैं, यह जानने के लिए यहां पढ़ें?] आइए सिंटैक्स को विस्तार से देखें:

टाइप करें :कीवर्ड कथन की शुरुआत को चिह्नित करता है।

aArray_name :सहयोगी सरणी का नाम। यह पूरी तरह से उपयोगकर्ता-परिभाषित है और Oracle डेटाबेस नामकरण मानदंडों का अनुपालन करता है।

की तालिका है :Oracle डाटाबेस आरक्षित वाक्यांश जिसके प्रयोग से उपयोगकर्ता संकलक को बताता है कि सरणी किस प्रकार के तत्वों को धारण करने जा रही है?

Element_Datatype :उन तत्वों का डेटाटाइप जो सरणी धारण करने जा रहा है। Oracle डेटाबेस में सभी संग्रह समरूप प्रकृति के होते हैं, जिसका अर्थ है कि संग्रह का प्रत्येक तत्व समान डेटाटाइप का होना चाहिए।

Not_null :एक वैकल्पिक क्लॉज, जिसका यदि उपयोग किया जाता है, तो यह सुनिश्चित करता है कि प्रत्येक इंडेक्स में NULL के बजाय उसके अनुरूप एक मान हो।

द्वारा अनुक्रमणिका :वह खंड जिसके उपयोग से उपयोगकर्ता सरणी की सबस्क्रिप्ट के डेटा प्रकार को निर्दिष्ट करता है।

Index_elements_datatype :सरणी के सबस्क्रिप्ट तत्वों का डेटाटाइप।

उदाहरण:Oracle डेटाबेस में साहचर्य सरणी कैसे बनाएं?

साहचर्य सरणी केवल एक PL / SQL ब्लॉक के अंदर बनाई जा सकती है, इसलिए इसका दायरा उस ब्लॉक तक सीमित है जिसमें इसे बनाया गया है, जिसका अर्थ है कि इसका उपयोग उस ब्लॉक के बाहर नहीं किया जा सकता है। आइए देखें कि Oracle डेटाबेस में एक साहचर्य सरणी कैसे बनाएं?

चरण 1:सहयोगी सरणी बनाएं

	SET SERVEROUTPUT ON;
	DECLARE
	    TYPE books IS TABLE OF NUMBER
	        INDEX BY VARCHAR2 (20);

ऊपर दिए गए कोड में हमने 'किताबें . नाम से एक एसोसिएटिव ऐरे बनाया है ' जिसमें NUMBER डेटाटाइप के तत्व और VARCHAR2 डेटाटाइप की सबस्क्रिप्ट हो सकती है।

चरण 2:सहयोगी सरणी चर बनाएं

Isbn Books;

कार्यक्रम में सरणी को संदर्भित करने के लिए आपको एक सहयोगी सरणी चर की आवश्यकता है। ऐरे वेरिएबल को बहुत आसानी से बनाया जा सकता है। आपको बस वेरिएबल का नाम लिखना है (जो 'isbn' . है हमारे मामले में) जिसे उपयोगकर्ता परिभाषित किया गया है और उसके बाद सहयोगी सरणी का नाम दिया गया है।

चरण 3:सहयोगी सरणी में डेटा डालें

जैसा कि ऊपर बताया गया है सहयोगी सरणी डेटा को कुंजी-मूल्य जोड़े में रखती है। इस प्रकार अन्य संग्रहों के विपरीत, उपयोगकर्ताओं को सरणी (कुंजी) और डेटा दोनों की सबस्क्रिप्ट सम्मिलित करनी होती है।

BEGIN
-- How to insert data into the associative array 
isbn('Oracle Database') := 1234;
isbn('MySQL') := 9876; 

नेस्टेड टेबल और VARRAYs की तरह हम PL/SQL ब्लॉक के एक्ज़ीक्यूशन सेक्शन में एसोसिएटिव ऐरे में डेटा डालते हैं। यदि आपने देखा कि अन्य संग्रहों के विपरीत हमने डेटा डालने के लिए INSERT DML स्टेटमेंट का उपयोग नहीं किया है, बल्कि हमने इसे Array वेरिएबल 'isbn' का उपयोग करके डाला है। . नीचे आप ऐरे वेरिएबल का उपयोग करके साहचर्य सरणी के लिए इन्सर्ट स्टेटमेंट का सिंटैक्स देख सकते हैं।

Array_variable (subscript/key) := data; 

जैसा कि आप देख सकते हैं कि साहचर्य सरणी में डेटा सम्मिलित करने के लिए आपको पहले सरणी चर का नाम और उसके बाद सरणी की सबस्क्रिप्ट और फिर अपने सरणी के लिए डेटा लिखना होगा।

चरण 4:संग्रह के डेटा को कैसे अपडेट करें - सहयोगी सरणी?

सहयोगी सरणी के मूल्यों को अद्यतन करना उन्हें सम्मिलित करना जितना आसान है। यदि आप किसी मान को बदलना चाहते हैं तो वही कथन लिखें जो संशोधित मानों के साथ सम्मिलन के लिए उपयोग किया जाता है। उदाहरण के लिए मान लें कि आप कुंजी MySQL के विरुद्ध मान को 9876 से 1010 में बदलना चाहते हैं तो आप बस लिखें

	-- How to update data of associative array.	
	 	isbn('MySQL') := 1010; 

फिर से आपको मानों को अपडेट करने के लिए UPDATE DML लिखने की आवश्यकता नहीं है। आप बस सरणी चर का उपयोग करें।

चरण 5:संग्रह-सहयोगी सरणी से डेटा कैसे प्राप्त करें?

जैसे हमें वैल्यू डालने के लिए डीएमएल स्टेटमेंट डालने या वैल्यू अपडेट करने के लिए डीएमएल अपडेट करने की आवश्यकता नहीं है, वैसे ही हमें वैल्यू पुनर्प्राप्त करने के लिए डीएमएल का चयन करने की आवश्यकता नहीं है।

मान लीजिए कि आप कुंजी 'ओरेकल डेटाबेस' के विरुद्ध संग्रहीत मान देखना चाहते हैं। उसके लिए आपको बस लिखना होगा…

-- how to retrieve data using key from associative array.  	
	  DBMS_OUTPUT.PUT_LINE ('Value '||isbn ('Oracle Database'));

आइए कोड के इन सभी हिस्सों को एक प्रोग्राम में मिला दें।

SET SERVEROUTPUT ON;
DECLARE
    TYPE books IS TABLE OF NUMBER
        INDEX BY VARCHAR2(20);
    isbn Books;
BEGIN
    	-- How to insert data into the associative array 
    	isbn('Oracle Database') := 1234;
    	isbn('MySQL') := 9876;
    	DBMS_OUTPUT.PUT_LINE('Value Before Updation '||isbn('MySQL'));

    	-- How to update data of associative array.
    	isbn('MySQL') := 1010;
    
-- how to retrieve data using key from associative array.  
    	DBMS_OUTPUT.PUT_LINE('Value After Updation '||isbn('MySQL'));
END;
/

यहां कुछ मिनटों के संशोधन के साथ कार्यक्रम है। उपरोक्त पीएल/एसक्यूएल प्रोग्राम दिखाता है कि कुंजी का उपयोग करके एक विशिष्ट मान कैसे प्राप्त किया जाए। लूप्स का उपयोग करके एसोसिएटिव एरे से सभी मूल्यों को कैसे प्राप्त करें, यह जानने के लिए आप वीडियो ट्यूटोरियल देख सकते हैं। वहाँ मैंने इसे बहुत विस्तार से समझाया है।

इस ट्यूटोरियल को समाप्त करने से पहले, कुछ संकेत हैं जो मुझे लगता है कि आपको पता होना चाहिए। ये संकेत हैं -

  • पीएल/एसक्यूएल एसोसिएटिव ऐरे इंडेक्स डेटाटाइप के रूप में BINARY_INTEGER, PLS_INTEGER, POSITIVE, NATURAL, SIGNTYPE या VARCHAR2 को सपोर्ट करता है।
  • रॉ, NUMBER, LONG-ROW, ROWID और CHAR असमर्थित इंडेक्स डेटाटाइप हैं।

एलीमेंट डेटाटाइप के मामले में, पीएल/एसक्यूएल संग्रह सहयोगी ऐरे का समर्थन करता है -

  • PL/SQL अदिश डेटा प्रकार :DATE, BLOB, CLOB, BOOLEAN या NUMBER और VARCHAR2 उनके उपप्रकारों के साथ।
  • अनुमानित डेटा :ऐसे डेटा प्रकारों के लिए उपयोग किया जाने वाला शब्द जो तालिका कॉलम, कर्सर अभिव्यक्ति या पूर्वनिर्धारित पैकेज चर से विरासत में मिला है
  • उपयोगकर्ता-परिभाषित प्रकार: एक वस्तु प्रकार या संग्रह प्रकार जो उपयोगकर्ता परिभाषित है।

यह पीएल/एसक्यूएल संग्रह पर एक विस्तृत ट्यूटोरियल है - सहयोगी सरणी। यह ट्यूटोरियल उन सभी विषयों को शामिल करता है जिनकी आप Oracle डेटाबेस प्रमाणन परीक्षा के साथ-साथ साक्षात्कार में भी उम्मीद कर सकते हैं। आशा है आपको पढ़कर अच्छा लगा होगा।

आप कुछ नया सीखने में दूसरों की मदद कर सकते हैं और साथ ही इस ब्लॉग को अपने सोशल नेटवर्क पर साझा करके अधिक लोगों तक पहुंचने में हमारी मदद कर सकते हैं। हमें टैग करना न भूलें क्योंकि हम अपने सभी समर्थकों, दर्शकों और ग्राहकों को जोर-जोर से चिल्लाना पसंद करते हैं। धन्यवाद और आपका दिन शुभ हो!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ग्रैडल द्वारा जावा वेब ऐप में ojdbc7 कैसे जोड़ें?

  2. मैं Oracle में एक लेगेसी लेफ्ट आउटर जॉइन स्टेटमेंट को कैसे परिवर्तित करूं?

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

  4. APPLSYSPUB स्कीमा

  5. वेतन से पंक्ति संख्या का चयन करें जहां पंक्ति संख्या =3;