如果不匹配则从 abl 返回错误字符串
Returning error string from abl if no match
我正在尝试搜索数据库,然后在找到匹配项时删除一条记录。然后,如果没有找到匹配项,我想 return 一个带有错误消息的字符串格式错误。
DEF INPUT PARAM i_cCarID LIKE Car.carID NO-UNDO.
DEFINE OUTPUT PARAMETER o_cErrorMsg AS CHARACTER NO-UNDO.
DEF BUFFER carBuffer_B1 FOR Car.
FIND FIRST carBuffer_B1 WHERE carBuffer.carID= i_cCarID EXCLUSIVE-LOCK NO-ERROR.
IF AVAIL(carBuffer_B1) THEN DO:
DELETE carBuffer_B1 NO-ERROR.
IF ERROR-STATUS:ERROR THEN DO:
o_cErrorMSG = "Error: ".
RETURN o_cErrorMsg + ERROR-STATUS:GET-MESSAGE(1).
END.
END.
从 java 调用时,此代码似乎 return 没有任何错误。
编辑 1. 找不到匹配项甚至会导致错误,还是您必须以某种方式显式 "throw" 错误?
您有一个输出参数,但该过程执行 RETURN。这就是您看不到任何错误的原因。您的程序需要是这样的:(示例有客户 table 并且没有足够的错误处理)
DEF INPUT PARAM i_cCustNum LIKE Customer.Cust-Num NO-UNDO.
DEFINE OUTPUT PARAMETER o_cErrorMsg AS CHARACTER NO-UNDO.
DEF BUFFER carBuffer_B1 FOR Customer.
FIND FIRST carBuffer_B1 WHERE carBuffer_B1.Cust-Num = i_cCarID EXCLUSIVE-LOCK NO-ERROR.
IF AVAIL(carBuffer_B1) THEN
DO:
DELETE carBuffer_B1 NO-ERROR.
o_cErrorMsg = "Delete Succeeded for id " + string(i_cCarID).
END.
ELSE
DO:
o_cErrorMsg = "No record found with id " + string(i_cCarID).
END.
我正在尝试搜索数据库,然后在找到匹配项时删除一条记录。然后,如果没有找到匹配项,我想 return 一个带有错误消息的字符串格式错误。
DEF INPUT PARAM i_cCarID LIKE Car.carID NO-UNDO.
DEFINE OUTPUT PARAMETER o_cErrorMsg AS CHARACTER NO-UNDO.
DEF BUFFER carBuffer_B1 FOR Car.
FIND FIRST carBuffer_B1 WHERE carBuffer.carID= i_cCarID EXCLUSIVE-LOCK NO-ERROR.
IF AVAIL(carBuffer_B1) THEN DO:
DELETE carBuffer_B1 NO-ERROR.
IF ERROR-STATUS:ERROR THEN DO:
o_cErrorMSG = "Error: ".
RETURN o_cErrorMsg + ERROR-STATUS:GET-MESSAGE(1).
END.
END.
从 java 调用时,此代码似乎 return 没有任何错误。
编辑 1. 找不到匹配项甚至会导致错误,还是您必须以某种方式显式 "throw" 错误?
您有一个输出参数,但该过程执行 RETURN。这就是您看不到任何错误的原因。您的程序需要是这样的:(示例有客户 table 并且没有足够的错误处理)
DEF INPUT PARAM i_cCustNum LIKE Customer.Cust-Num NO-UNDO.
DEFINE OUTPUT PARAMETER o_cErrorMsg AS CHARACTER NO-UNDO.
DEF BUFFER carBuffer_B1 FOR Customer.
FIND FIRST carBuffer_B1 WHERE carBuffer_B1.Cust-Num = i_cCarID EXCLUSIVE-LOCK NO-ERROR.
IF AVAIL(carBuffer_B1) THEN
DO:
DELETE carBuffer_B1 NO-ERROR.
o_cErrorMsg = "Delete Succeeded for id " + string(i_cCarID).
END.
ELSE
DO:
o_cErrorMsg = "No record found with id " + string(i_cCarID).
END.