2013-03-08 2 views
0

사용자, DB2 9.x에서 delete 문은 정상적으로 작동하고 특정 행이 있으면 성공한 리턴 코드를 제공합니다. 행이 존재하지 않는 경우, 그것은 반환이 아닌 제로행이 없을 때 DB2 삭제 명령문 오류

즉 말 EmployeeTable 그것은 다음과 같이 출력을 제공 직원 ID 1234 db2 "delete from EmployeeTable where employeeID = 1234"
포함되어 있지 않습니다.

SQL0100W No row was found for FETCH, UPDATE or DELETE; or the result of a query is an empty table. SQLSTATE=02000 

행이 없으면 성공/0 반환 코드를 반환 할 수 있습니까?

+0

달성하려는 목표는 무엇입니까? – bruno

+0

@ 브루노 : 우리는 SQL을 입력하기 위해 외부 래퍼 스크립트를 제공 받았다. 그러나 랩퍼 스크립트는 항상 SQL의 리턴 코드가 0인지 점검합니다. 따라서 빈 값 시나리오를 처리하기 위해 버그가 제기되었습니다. thanks @AngocA에 – diaryfolio

답변

1

저장 프로 시저에 해당 delete 문을 래핑하고 내부에서 예외를 catch 할 수 있습니다. 저장 프로 시저 실행은 항상 0을 throw합니다.

명령에 경고가 있기 때문에 명령 줄에서 수행 할 수있는 작업이 없습니다. db2 삭제를 호출 할 때 후 처리를 수행 할 수도 있습니다 (예 : 쉘 기능 작성). 해당 sqlcode가 발생 된 경우 오류 코드를 변경하십시오.

+0

님께 감사드립니다. 디코드 또는 비슷한 종류의 빈 행 조건을 캡처하는 방법이 있습니까? – diaryfolio

+0

스토어드 프로 시저에서 디코드와 비슷한 작업을 수행 할 수 있습니다. create procedure p() begin declare dummy int; sqlstate '02000'에 대한 계속 처리기 선언 dummy = 1; tableX에서 삭제; 종료@ – AngocA