त्रुटि बढ़ाना मैं थोड़ा सा संदेह कर रहा हूं। के इस पैकेज की प्रक्रियाओं मान लेते हैं:स्वायत्त लेनदेन का दायरा और
PROCEDURE ERR_MANAGER(I_ERRM IN VARCHAR2) IS
BEGIN
ROLLBACK;
--DO SOME STUFF
END ERR_MANAGER;
PROCEDURE test IS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
test2;
COMMIT;
EXCEPTION WHEN OTHERS THEN ERR_MANAGER(SQLERRM);
END test;
PROCEDURE test2 IS
BEGIN
--DO SOME TRANSACTIONNAL DML
RAISE_APPLICATION_ERROR(-20001, 'ERR'); --for the test purpose, in reality this could be any actual error
END test2;
तो, आप वहाँ test2()
में कोई त्रुटि है, जो test()
अप करने के लिए बढ़ाने के लिए जा रहा है देख सकते हैं के रूप में, और उसके बाद err_manager()
विधि में नियंत्रित किया।
तो मैं 2 प्रश्न हैं:
- क्या err_manager के दायरे में है()? क्या यह अभी भी स्वायत्त लेनदेन के भीतर है? मुझे ऐसा लगता है, क्योंकि यह केवल एक फंक्शन कॉल है, लेकिन मैं यह सुनिश्चित करना चाहता हूं कि
- क्या हो रहा है यदि आप किसी भी प्रकार की प्रतिबद्धता या रोलबैक के बिना ऊपरी स्तर तक बढ़ने में त्रुटि के कारण स्वायत्त लेनदेन से बाहर निकलते हैं तो क्या हो रहा है?
बहुत बहुत धन्यवाद। एस
शानदार, धन्यवाद! – Sebas