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  );

}


반응형

+ Recent posts