সাধারণভাবে, পদ্ধতিগুলি প্রতিশ্রুতিবদ্ধ হওয়া উচিত নয়। এই ধরণের লেনদেন নিয়ন্ত্রণের সিদ্ধান্তগুলি উচ্চ-স্তরের কোডে ছেড়ে দেওয়া উচিত যা জানে যে লজিক্যাল লেনদেন আসলে সম্পূর্ণ হয়। যদি আপনি কোনও সঞ্চিত পদ্ধতির অভ্যর্থনা করেন তবে আপনি তার পুনরায় ব্যবহারযোগ্যতা সীমাবদ্ধ করছেন কারণ যে কলার প্রক্রিয়াটিকে বৃহত্তর লেনদেনের অংশ হিসাবে পরিবর্তনগুলি চায় সে কেবল প্রক্রিয়াটিকে সরাসরি কল করতে পারে না।
যদি আপনি ইন্টারেক্টিভ পদ্ধতিতে কোনও কল করেন, আপনাকে অবশ্যই লেনদেনকে স্পষ্টভাবে প্রতিশ্রুতিবদ্ধ করতে বা রোলব্যাক করতে হবে কারণ প্রক্রিয়া কলটি একটি যৌক্তিক লেনদেন হিসাবে অভিহিত করা বা যদি আপনি একাধিক পদ্ধতি কলের সাথে জড়িত কোনও বৃহত্তর লেনদেন রচনা করতে চান তবে ওরাকলের কোনও ধারণা নেই। আপনি ব্যবহার করেন তাহলে dbms_scheduler
, dbms_scheduler
ধরে নেয় যে একটা কাজ একটি লজিক্যাল লেনদেন এবং কাজ অভিমানী এটা সফল হয়েছে শেষে (এ করে dbms_job
একই জিনিস না)।
ফাংশনগুলি প্রথম স্থানে ডেটা ম্যানিপুলেট করা উচিত নয়। ডেটা ম্যানিপুলেট করে এমন একটি ফাংশন এসকিউএল স্টেটমেন্ট থেকে কল করা যায় না (কোণার ক্ষেত্রে ব্যতীত যেখানে ফাংশনটি নিজেই স্বায়ত্তশাসিত লেনদেনটি ব্যবহার করার জন্য ঘোষণা করা হয় যা প্রায়শই উপযুক্ত নয়)। উভয় ফাংশন এবং পদ্ধতি থাকার পুরো বিষয়টি হ'ল ফাংশনগুলি এসকিউএল স্টেটমেন্টগুলিতে এম্বেড করা যেতে পারে এবং ব্যবহারকারীদের আরও নিখরচায় মঞ্জুর করা যেতে পারে কারণ তারা কোনও ডেটা পরিবর্তন করে না।