Sqlca 구조체 설명 및 오류 처리
Pro*c에서 쿼리를 실행 할 때 마다 sqlca로 결과를 전달 해 준다.
그래서 sqlca의 구조체를 이해해야 오류 발생시 적절하게 조치 하는데 필요하다.
Sqlca 알아보기 |
아래와 같이 해더를 추가한다.
#include <sqlca.h> 혹은 EXEC SQL INCLUDE SQLCA; |
위의 해더에는 아래와 같은 구조체를 활용 하여 에러 처리를 한다.
struct sqlca { char sqlcaid[8]; long sqlabc; long sqlcode; // oracle error code 저장 struct { unsigned short sqlerrml; // 오류메시지 길이 char sqlerrmc[70]; // 오류메시지 } sqlerrm; char sqlerrp[8]; long sqlerrd[6]; char sqlwarn[8]; char sqlext[8]; }; struct sqlca sqlca; |
각 구조체 상세 설명은 아래와 같다.
sqlca.sqlcode
sqlca.sqlcode == 0 |
정상 처리 |
sqlca.sqlcode == 1403 |
조회된 데이터 없음 |
sqlca.sqlcode == 100 |
insert 된 데이터 없음 ( 컴파일 옵션이 MODE=ANSI 일 때 ) |
sqlca.sqlcode < 0 |
오류 발생 |
sqlca.sqlerrd
sqlca.sqlerrd[2] | select 조회 건수 fetch 누적 조회 건수 insert, update, delete 건수 |
sqlca.sqlerrd[4] | sql문 오류가 발생한 위치 |
오류 처리 예제를 보겠다.
#include <sqlca.h> .... .... EXEC SQL UPDATE USER_TBL SET AGE = '50' WHERE NAME LIKE '%Suzan%'; if( sqlca.sqlcode == 0 ) { prinf(" 정상 처리, 처리 된 건 수[%d] \n", sqlca.sqlerrd[2]); } else if( sqlca.sqlcode == 1403 ) { printf(" 조회된 건 수가 없음 \n" ); } else if( sqlca.sqlcode < 0 ) { printf(" 오류 발생, code[%d] msg[%s] \n" sqlca.sqlcode, sqlca.sqlerrm.sqlerrmc ); } |
'프로그램 > Pro*c' 카테고리의 다른 글
[Pro*c] sqlglm 함수를 이용한 오류 메시지 출력 하기 (0) | 2017.07.18 |
---|---|
[Pro*c] Connect, DisConnect (0) | 2016.11.22 |