আমি বছরের পর বছর ধরে প্রথম কোডের নমুনাটি ব্যবহার করছি। গণনার চেয়ে নোটফাউন্ডে লক্ষ্য করুন।
UPDATE tablename SET val1 = in_val1, val2 = in_val2
WHERE val3 = in_val3;
IF ( sql%notfound ) THEN
INSERT INTO tablename
VALUES (in_val1, in_val2, in_val3);
END IF;
নীচের কোডটি সম্ভবত নতুন এবং উন্নত কোড
MERGE INTO tablename USING dual ON ( val3 = in_val3 )
WHEN MATCHED THEN UPDATE SET val1 = in_val1, val2 = in_val2
WHEN NOT MATCHED THEN INSERT
VALUES (in_val1, in_val2, in_val3)
প্রথম উদাহরণে আপডেটটি একটি সূচক সন্ধান করে। এটি করতে হবে, ডান সারিতে আপডেট করার জন্য। ওরাকল একটি অন্তর্নিহিত কার্সার খোলে, এবং আমরা এটি একটি সংশ্লিষ্ট সন্নিবেশটিকে মোড়ানোর জন্য ব্যবহার করি যাতে আমরা জানি যে সারণিটি তখনই ঘটবে যখন কীটির অস্তিত্ব থাকবে না। তবে সন্নিবেশ একটি স্বতন্ত্র কমান্ড এবং এটির জন্য দ্বিতীয় সন্ধান করা উচিত। আমি মার্জ কমান্ডের অভ্যন্তরীণ কার্যকারিতা জানি না তবে যেহেতু কমান্ডটি একক ইউনিট, ওরাকল একটি একক সূচী অনুসন্ধানের সাথে সঠিক সন্নিবেশ বা আপডেট করতে পারত।
আমার মনে হয় আপনার যখন কিছু প্রক্রিয়াজাতকরণ করতে হবে তখন মার্জ করা ভাল means যার অর্থ কয়েকটি সারণী থেকে ডেটা নেওয়া এবং একটি টেবিল আপডেট করা, সম্ভবত সারি সন্নিবেশ করা বা মোছা। তবে একক সারির ক্ষেত্রে, সিনট্যাক্সটি সাধারণ হওয়ার কারণে আপনি প্রথম কেসটি বিবেচনা করতে পারেন।