1
Мы используем функции в одном .p-файл, как следующее:транзакций и функции
myTest.p
BLOCK-LEVEL ON ERROR UNDO, THROW.
FUNCTION secondFunc RETURNS LOG():
UNDO, THROW NEW Progress.Lang.AppError("ERROR HAPPENED, UNDO ALL!").
END FUNCTION.
FUNCTION firstFunc RETURNS LOG():
secondFunc().
END FUNCTION.
FUNCTION starter RETURNS LOG():
/* start transaction */
DO TRANSACTION:
firstFunc().
END.
END FUNCTION.
/* start execution of the function tree */
starter().
CATCH err AS Progress.Lang.Error:
RUN WRITE_log(err:GetMessage(1)).
MESSAGE err:GetMessage(1) VIEW-AS ALERT-BOX.
UNDO, RETURN ERROR.
END.
В соответствии с этим кодом, делает Transaction
отменить все изменилось сделано внутри его в starter()
-функция? Или нам нужно передать какую-то ручку ко всем функциям внутри Transaction
, чтобы ее можно было «отменить»?