我们在单个.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
- 函数中完成了更改?或者我们是否需要将某种句柄传递给MinimumVisualStudioVersion
内的所有函数,以便它可以“撤消”?
答案 0 :(得分:3)
如果“外部”事务回滚,则所有子事务(包括被调用代码中的事务)也将回滚。