파워빌더 SQL문장 에러체크
파워빌더 SQL문장 에러체크
1. SQLCA.SQLNROWS
==> SQL 문장 수행시 수행된 ROW 건수를 리턴 (Insert,update,select 등)
※ 일반적으로 SQL문장의 올발른 실행 여부를 판단하기 위해 SQLCODE값을 확인하지만
DELETE FROM emp_tab
WHERE emp_no = :ls_empno;
IF SQLCA.SQLCODE = 0 THEN
COMMIT;
ELSE
ROLLBACK;
END IF
위에 SQL문에서 변수 ls_empno에 잘못된 값이 들어가여 삭제된 건수가 한개도 없어도
SQL문은 정상적으로 처리되었기 때문에 SQLCODE값은 0을 RETURN한다.
그렇기 때문에 좀 더 정확하게 체크를 하기를 원한다면, SQLCA.SQLNROWS를 체크 하는
것도 좋은 방법이다.
===========================================================================
long ll_cnt
ll_cnt = sqlca.sqlnrows -- 수행된 row 건수를 리턴
IF ll_cnt = 0 THEN GOTO error_proc -- row건수가 없으면 에러로 처리..
error_proc:
ROLLBACK USING sqlca; -- rollback 처리
gf_mg_MessageDisplay(gs_msg,'에러가 발생했습니다.' ,Exclamation!,Ok!,gci_btn_first)
SetPointer(Arrow!)
===========================================================================
2. SQLCA.SQLCODE
==> SQL 문장 수행시 SQLCODE를 RETURN한다.
SQLCA.SQLCODE = -1
==> 에러,SQL 문장수행 실패, SQLErrText나 SQLDBCode 확인
SQLCA.SQLCODE = 100
==> 패치된 ROW가 없음
SQLCA.SQLCODE = 0
==> 성공
===========================================================================
IF sqlca.sqlcode <> 0 THEN GOTO error_proc
error_proc:
ROLLBACK USING sqlca; -- rollback 처리
gf_mg_MessageDisplay(gs_msg,'에러가 발생했습니다.' ,Exclamation!,Ok!,gci_btn_first)
SetPointer(Arrow!)
===========================================================================
파워빌더 SQL문장 에러체크 파워빌더 SQL문장 에러체크 파워빌더 SQL문장 에러체크 파워빌더 SQL문장 에러체크 파워빌더 SQL문장 에러체크 파워빌더 SQL문장 에러체크 파워빌더 SQL문장 에러체크 파워빌더 SQL문장 에러체크