6
我懷疑了一下。讓我們假設這個包的程序:自治事務範圍和錯誤提升
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的範圍()?它是否仍在自主交易中?我想是的,因爲它只是一個函數調用,但我想確定
- 如果因爲升級錯誤而無法進行任何類型的提交或回滾而退出自治事務,會發生什麼情況?
非常感謝你。 S.
太棒了,謝謝! – Sebas