티스토리 뷰


파워빌더 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문장 에러체크 




댓글