आप इसे आजमा सकते हैं
1 MERGE
2 INTO target_table tgt
3 USING source_table src
4 ON ( src.object_id = tgt.object_id )
5 WHEN MATCHED
6 THEN
7 UPDATE
8 SET tgt.object_name = src.object_name
9 , tgt.object_type = src.object_type
10 WHEN NOT MATCHED
11 THEN
12 INSERT ( tgt.object_id
13 , tgt.object_name
14 , tgt.object_type )
15 VALUES ( src.object_id
16 , src.object_name
17 , src.object_type );
वाक्य रचना पहली बार में थोड़ा कठिन लगता है, लेकिन अगर हम ऊपर से नीचे तक पढ़ते हैं, तो यह काफी सहज है। निम्नलिखित खंडों पर ध्यान दें:
•MERGE (पंक्ति 1):जैसा कि पहले बताया गया है, यह अब Oracle में चौथा DML स्टेटमेंट है। कोई भी संकेत जो हम जोड़ना चाहते हैं, सीधे इस कीवर्ड का अनुसरण करें (अर्थात MERGE /*+ HINT */);
•INTO (पंक्ति 2):इस प्रकार हम MERGE के लिए लक्ष्य निर्दिष्ट करते हैं। लक्ष्य या तो एक तालिका या एक अद्यतन करने योग्य दृश्य होना चाहिए (एक इन-लाइन दृश्य का उपयोग यहां नहीं किया जा सकता है);
•USING (पंक्ति 3):USING क्लॉज MERGE के लिए स्रोत डेटासेट का प्रतिनिधित्व करता है। यह एक एकल तालिका हो सकती है (जैसा कि हमारे उदाहरण में है) या एक इन-लाइन दृश्य;
•ON () (पंक्ति 4):ON क्लॉज वह जगह है जहां हम स्रोत डेटासेट और लक्ष्य तालिका के बीच जुड़ने की आपूर्ति करते हैं। ध्यान दें कि शामिल होने की शर्तें कोष्ठक में होनी चाहिए;
•जब मिलान किया गया (पंक्ति 5):यह खंड वह जगह है जहां हम ओरेकल को निर्देश देते हैं कि क्या करना है जब हमारे पास लक्ष्य तालिका में पहले से ही एक मिलान रिकॉर्ड होता है (यानी स्रोत और लक्ष्य डेटासेट के बीच एक जुड़ाव होता है)। हम स्पष्ट रूप से इस मामले में एक अद्यतन चाहते हैं। इस क्लॉज के प्रतिबंधों में से एक यह है कि हम ON क्लॉज में उपयोग किए गए किसी भी कॉलम को अपडेट नहीं कर सकते हैं (हालांकि निश्चित रूप से हमें इसकी आवश्यकता नहीं है क्योंकि वे पहले से ही मेल खाते हैं)। जॉइन कॉलम को शामिल करने का कोई भी प्रयास एक अनजाने अमान्य पहचानकर्ता अपवाद को जन्म देगा; और
•जब मिलान नहीं किया गया (पंक्ति 10):यह खंड वह जगह है जहां हम रिकॉर्ड दर्ज करते हैं जिसके लिए कोई मौजूदा मिलान नहीं है।