NO-UNDO对define variable in progress 4gl有什么意义



我是progress 4GL语言的初学者,我想了解progress 4GL语言中NO-UNDO和NO-ERROR之间的区别。

无错误

没有错误可以在运行时支持错误,并将这些错误的责任交给开发人员。

/* 
In this example we do basically the same thing twice, once with no-error and once without. 
Without no-error the program will exit and the last message box will not be shown.
*/
DEFINE TEMP-TABLE tt NO-UNDO
FIELD a AS INTEGER.
CREATE tt.
ASSIGN tt.a = INTEGER("HELLO") NO-ERROR.
IF ERROR-STATUS:ERROR THEN DO:
MESSAGE "There was an error" VIEW-AS ALERT-BOX ERROR.
/* You will be left with a tt-record with 0 as field value */
END.

MESSAGE "After no-error" VIEW-AS ALERT-BOX.
CREATE tt.
ASSIGN tt.a = INTEGER("GOODBYE").
MESSAGE "After error" VIEW-AS ALERT-BOX.

NO-UNDO

无撤消删除撤消处理。这通常是默认的首选行为,除非您需要临时表、变量等来使用撤消处理。下面是一个非常基本的例子。

除非你真的需要撤销处理,否则最好避免。它可能会影响性能、本地磁盘写入等。它还限制字符变量的长度等。

注意:从"默认"更改为"首选行为",因为这是更好的描述

DEFINE VARIABLE cTxt1 AS CHARACTER NO-UNDO.
DEFINE VARIABLE cTxt2 AS CHARACTER.
DO TRANSACTION:
ASSIGN 
cTxt1 = "HELLO"
cTxt2 = "GOODBYE".
MESSAGE "Do you want to undo?"
VIEW-AS ALERT-BOX 
BUTTONS YES-NO
UPDATE lAnswer AS LOGICAL.
IF lAnswer THEN 
UNDO, RETRY.        
END.
DISPLAY cTxt1 cTxt2.

最新更新