I doubt a little. Suppose these are batch procedures:
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;
So, as you can see there is an error in test2() , which will go up to test() , and then be processed in the err_manager() method.
I have 2 questions:
- What is the size of err_manager ()? Is it still in an offline transaction? I think so, since this is only a function call, but I would like to be sure.
- What happens if you exit a standalone transaction brutally due to an increase in error to the upper levels without taking any commit or rollback actions?
Many thanks. S.
Sebas source share