代码之家  ›  专栏  ›  技术社区  ›  sander

正在创建运行错误块的新记录结果

  •  0
  • sander  · 技术社区  · 6 年前

    我正试图返回1-4之间的值,这取决于事务是否失败。添加一条新记录会出现在数据库中,但代码返回4,这意味着正在运行错误块,为什么会发生这种情况?

    我从Java发送输入参数,并从ABL返回一个数字作为输出参数。

    /*Input parameters*/
    DEFINE INPUT PARAMETER i_cCode LIKE Unit.Code NO-UNDO.
    DEFINE INPUT PARAMETER i_iTransactionType AS INTEGER NO-UNDO.
    DEFINE INPUT PARAMETER i_cName LIKE UNIT.Name NO-UNDO.
    /*Output parameters*/ 
    DEFINE OUTPUT PARAMETER o_iStatus AS INTEGER NO-UNDO. 
    /*Local variables*/
    DEFINE VARIABLE iModifySuccess AS INTEGER INITIAL 1.
    DEFINE VARIABLE iModifyFailed AS INTEGER INITIAL 2.
    DEFINE VARIABLE iAddedSuccessful AS INTEGER INITIAL 3.
    DEFINE VARIABLE iCreateFailed AS INTEGER INITIAL 4.
    /*Transaction types*/
    DEFINE VARIABLE iCreate AS INTEGER INITIAL 1.
    DEFINE VARIABLE iModify AS INTEGER INITIAL 2.
    
    FIND FIRST Unit WHERE Unit.Code = i_cCode EXCLUSIVE-LOCK NO-ERROR.
                IF AVAIL(Unit) AND i_iTransactionType = iModify THEN DO:
    
                    ASSIGN
                        Unit.Name = i_cName
                        /*Other fields as well*/
                    NO-ERROR.
                    MESSAGE "Unit has been modified".
                    o_iStatus = iModifySuccess.
    
                    IF ERROR-STATUS:ERROR THEN DO:
                        MESSAGE "Error Modifying Unit" + ERROR-STATUS:GET-MESSAGE(1).    
                        o_iStatus = iModifyFailed.
                    END.   
    
                END.
                ELSE DO:
                    IF i_iTransactionType = iCreate THEN DO:
                        /*Create new record*/
                        CREATE Unit NO-ERROR.
                            ASSIGN
                            Unit.Name = i_cName
                            /*Other fields as well*/
                                NO-ERROR.
                            MESSAGE "New Unit Created"
                            o_iStatus = iAddedSuccessful.
    
                            IF ERROR-STATUS:ERROR THEN DO:
                                MESSAGE "ERROR creating a new Unit" + ERROR-STATUS:GET-MESSAGE(1).
                                o_iStatus = iCreateFailed.
                            END. 
                    END.   
                END.
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   sander    6 年前

    好像有人失踪了 . 之后 MESSAGE "New Unit Created" 导致错误块运行。建造这个项目没有给出任何警告。

    推荐文章