0
다음 코드 블록을 실행하면 오류 138이 발생하고 실제로 작성에 실패합니다. 어떤 도움을 주시면 감사하겠습니다.찾기를 수행하고 찾을 때마다 오류 138이 발생하는 이유는 무엇입니까?
FIND PSESCDel EXCLUSIVE-LOCK
WHERE PSESCDel.EmployeeCode = PSESC.EmployeeCode
AND PSESCDel.ServiceCoverRef = PSESC.ServiceCoverRef NO-ERROR.
IF NOT AVAILABLE PSESCDel THEN
DO:
IF PSESC.EmployeeCode = "0358" THEN
MESSAGE "RM NOT AV" PSESC.ServiceCoverRef.
CREATE PSESCDel.
ASSIGN PSESCDel.EmployeeCode = PSESC.EmployeeCode
PSESCDel.ServiceCoverRef = PSESC.ServiceCoverRef
PSESCDel.DeletedDate = TODAY.
IF PSESC.EmployeeCode = "0350" THEN
DO:
MESSAGE "RM IT CAME TO CREATE".
IF ERROR-STATUS:ERROR OR ERROR-STATUS:NUM-MESSAGES > 0 THEN DO:
MESSAGE "RM ERROR NUMBER" STRING(ERROR-STATUS:GET-NUMBER(1)).
MESSAGE "RM ERROR MESSAGE" ERROR-STATUS:GET-MESSAGE(1).
END.
END.
END.
이것은 해결책이 아니지만 트랜잭션 범위 지정은 잠재적으로 문제가 될 수 있습니다. 독점 검색은 트랜잭션 블록을 시작합니다. 레코드를 업데이트하지 않으므로 코드 스 니펫에서 무의미한 트랜잭션 블록이 시작됩니다. 나중에 잘 할 수도 있지만 여전히 나쁜 습관입니다. 최상위 레벨 찾기는 잠금이 없어야합니다. 나중에 레코드를 갱신하려면 강하게 범위가 지정된 트랜잭션 블록 내부의 명명 된 버퍼에서 레코드를 찾으십시오. (v 퍼 이름 트랜잭션의 경우). 생성은 명명 된 버퍼와 강력한 범위의 트랜잭션 블록에도 있어야합니다. 당신은 트랜스 블록에 화면 메시지를 갖고 싶지 않습니다. – jdpjamesp
해당 테이블에서 작성 트리거를 점검하십시오. 사용할 수없는 일부 레코드를 참조 할 수 있습니다. – bupereira