Oracle नेस्टेड लेनदेन का समर्थन नहीं करता है। यदि कोई लेनदेन करता है, तो वह प्रतिबद्ध होता है। इसलिए आप आम तौर पर एक संग्रहीत कार्यविधि में लेन-देन (या रोलबैक) नहीं करना चाहते हैं, जिससे आपके लेन-देन शब्दार्थ भिन्न होने पर प्रक्रिया को कहीं और पुन:उपयोग करना मुश्किल हो जाता है।
हालाँकि, आप अपनी प्रक्रिया की शुरुआत में एक सेवपॉइंट घोषित कर सकते हैं और किसी त्रुटि के मामले में उस सेवपॉइंट पर रोलबैक कर सकते हैं। यदि आप कमिट को हटाते हैं, तो लेन-देन पूरी तरह से एप्लिकेशन कोड द्वारा नियंत्रित होता है न कि डेटाबेस कोड द्वारा
begin
savepoint beginning_of_proc;
insert/update/delete...
exception
when OTHERS then
rollback to beginning_of_proc;
raise;
end;
इस मामले में, हालांकि, मेरा पूर्वाग्रह कोड में एक सेवपॉइंट नहीं होना चाहिए, रोलबैक नहीं होना चाहिए, और अपवाद को पकड़ना नहीं होगा जब तक कि आप इसके साथ कुछ उपयोगी नहीं कर रहे हों। बस डीएमएल करें, किसी भी अपवाद को फेंक दें, और उन्हें अपने आवेदन में संभाल लें।