У меня странная ситуация
Это немного сложно объяснить, но я сделаю все возможное
Включено 3 разные базы данных
Из DB1 я вызываю функцию в DB2(через dblink)
Эта процедура вызывает другую процедуру, которая вставляет данные в таблицу в DB3
Функция в DB2 имеет дескриптор EXCEPTION, который должен откатывать все, что она делала в случае исключения
Я выполнил пример выполнения, и все прошло хорошо (ошибки не было), но вставка из процедуры 3 не была отменена, и мне пришлось выполнить откат из DB1 для истинного отката
Если я фиксирую из db1, строка вставляется
Я делаю что-то не так и есть ли способ отката непосредственно из функции на db2
Вот пример кода:
--DB1
PROCEDURE 1
BEGIN
x := function2@dblink_to_db2();
END;
--DB2
FUNCTION 2
BEGIN
procedure3();
RAISE SOME EXCEPTION;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
do_something_else();
RETURN 0;
END;
PROCEDURE 3
BEGIN
INSERT INTO tableA@dblink_to_db3 VALUES ... ;
END;
Таким образом, ошибка не возникает, но вставьтев таблицу на db3 не откатывается