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

Oracle डेटाबेस में VALUES-of बाउंड क्लॉज के साथ FORALL स्टेटमेंट

अब तक हमने सीखा है कि लोअर और अपर बाउंड क्लॉज का उपयोग करके घने संग्रह के साथ FORALL स्टेटमेंट का उपयोग कैसे करें और INDICES OF बाउंड क्लॉज का उपयोग करके एक विरल संग्रह। क्या होगा यदि हम केवल संग्रह के चयनित तत्वों के साथ FORALL स्टेटमेंट का उपयोग करना चाहते हैं? क्या हम वह कर सकते हैं? हां, हम तीसरे और अंतिम बाउंड क्लॉज के साथ FORALL स्टेटमेंट का उपयोग करके आसानी से ऐसा कर सकते हैं जो कि 'VALUES-OF' है।

बाध्य खंड का 'मूल्य' क्या है?

FORALL स्टेटमेंट संग्रह तत्वों को एक एकल DML स्टेटमेंट के साथ अनुकूलित तरीके से बाँधने के बारे में है। FORALL स्टेटमेंट के 'वैल्यूज़-ऑफ़' बाउंड क्लॉज़ का उपयोग करके हम संग्रह के चयनित तत्वों को DML स्टेटमेंट के साथ बाँध सकते हैं।

बाउंड क्लॉज के 'Values-of' का सिंटैक्स क्या है?

यह समझने से पहले कि बाउंड क्लॉज़ के मान कैसे काम करते हैं, आइए इसके सिंटैक्स पर एक नज़र डालें और जानें कि Oracle डेटाबेस में FORALL स्टेटमेंट के साथ 'Values-of' क्लॉज़ का उपयोग करने का वाक्य-रचना की दृष्टि से सही तरीका क्या है।

FORALL idx IN VALUES OF indexing-collection
[Save exception]
DML/MERGE statement;

जानकारी:
हमेशा याद रखें कि क्लॉज का नाम VALUES-OF नहीं VALUE-OF है। VALUE-OF लिखने से एक त्रुटि होगी जो आपके प्रोग्राम को समाप्त कर सकती है।
अधिकार के मूल्य
गलत का मान

वैल्यूज़ ऑफ़ बाउंड क्लॉज़ कैसे काम करता है?

बाध्य खंड के मूल्यों के लिए दो संग्रह की आवश्यकता होगी। पहला संग्रह 'स्रोत संग्रह' . होगा . हम FORALL स्टेटमेंट का उपयोग करके इस संग्रह के डेटा पर डालने, हटाने और अपडेट करने जैसे DML संचालन करेंगे।

दूसरा संग्रह 'अनुक्रमण संग्रह . होगा जो पहले संग्रह से चयनित तत्वों की अनुक्रमणिका संख्या निर्दिष्ट करेगा। ये चयनित तत्व वे तत्व होंगे जिन पर आप डीएमएल संचालन करना चाहते हैं।

चूंकि बाउंड क्लॉज का मान निर्दिष्ट करता है कि FORALL स्टेटमेंट के लूप इंडेक्स (उपरोक्त सिंटैक्स में 'idx') का मान दूसरे संग्रह में तत्व के मूल्यों पर आधारित होता है। इसलिए हमने उस अन्य संग्रह को उपरोक्त सिंटैक्स में अनुक्रमण-संग्रह के रूप में संदर्भित किया है।

तो यह अनुक्रमण संग्रह क्या है?

अनुक्रमण संग्रह अनुक्रमणिका का एक समूह है जिसके माध्यम से FORALL कथन लूप कर सकता है। यह संग्रह सघन संग्रह के साथ-साथ विरल संग्रह भी हो सकता है। इसके अलावा संग्रह में संग्रहीत सूचकांक संख्या अद्वितीय नहीं होनी चाहिए और इसे मनमाने क्रम में सूचीबद्ध किया जा सकता है।

क्या Values-of खंड के साथ कोई प्रतिबंध है जिसके बारे में हमें पता होना चाहिए?

हां, कुछ चीजें हैं जो आपको Oracle डेटाबेस में वैल्यू-ऑफ बाउंड क्लॉज के साथ काम करने से पहले पता होनी चाहिए। ये प्रतिबंध हैं -

  • अनुक्रमण संग्रह एक नेस्टेड तालिका या एक सहयोगी सरणी होना चाहिए।
  • यदि अनुक्रमण संग्रह एक सहयोगी सरणी है तो इसे PLS_INTEGER या BINARY_INTEGER द्वारा अनुक्रमित किया जाना चाहिए।
  • अनुक्रमण संग्रह के तत्व या तो PLS_INTEGER या BINARY_INTEGER के होने चाहिए।

Oracle डेटाबेस में FORALL स्टेटमेंट के साथ वैल्यू-ऑफ़ बाउंड क्लॉज़ का उदाहरण:

चरण 1:तालिका बनाएं

CREATE TABLE tut_79 (
    selected_data     NUMBER(5)
);

चरण 2:Oracle डेटाबेस में FORALL स्टेटमेंट के साथ Values-of खंड का उपयोग करने का तरीका प्रदर्शित करते हुए एक PL/SQL ब्लॉक लिखें।

SET SERVEROUTPUT ON;
DECLARE
    --Source collection
    TYPE My_NestedTable IS TABLE OF NUMBER;
    source_col My_NestedTable := My_NestedTable (9,18,27,36,45,54,63,72,81,90);
    
    --Indexing collection
    TYPE My_Array IS TABLE OF PLS_INTEGER INDEX BY PLS_INTEGER;
    index_col My_Array;
BEGIN
    --Initializing indexing collection with the index numbers.
    index_col   (1) :=  3;
    index_col   (5) :=  7;
    index_col   (12):=  8;
    index_col   (28):=  10;
    --FORALL statement 
    FORALL idx IN VALUES OF index_col
        INSERT INTO tut_79 VALUES (source_col (idx));
END;
/

आप इस कोड की विस्तृत व्याख्या वीडियो ट्यूटोरियल में देख सकते हैं। वहाँ मैंने इस PL/SQL ब्लॉक की हर एक लाइन के बारे में विस्तार से बताया है।

ओरेकल डेटाबेस में FORALL स्टेटमेंट के साथ वैल्यू-ऑफ बाउंड क्लॉज का उपयोग कैसे करें, इस पर ट्यूटोरियल है। उम्मीद है कि आपको यह उपयोगी लगेगा। कृपया इस ब्लॉग को अपने दोस्तों के साथ उनके सोशल मीडिया पर शेयर करें। अधिक जानकारीपूर्ण और रोचक ट्यूटोरियल के लिए मेरे YouTube चैनल को भी सब्सक्राइब करें।

धन्यवाद और आपका दिन मंगलमय हो।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. लिनक्स पर SQL सर्वर 2016

  2. जावा - कस्टम प्रकारों के साथ ऑरैकल प्रक्रिया को कैसे कॉल करें?

  3. INSERT STATEMENTS के रूप में निर्यात करें:लेकिन SQL Plus में लाइन 2500 वर्णों को ओवरराइड करती है!

  4. ओरेकल में जेसन के साथ काम करें

  5. डेटाबेस लिंक पर ऑरैकल में एक संग्रहीत फ़ंक्शन को कॉल करना (जो उपयोगकर्ता द्वारा परिभाषित प्रकार की एक सरणी देता है)