레이블이 error handler인 게시물을 표시합니다. 모든 게시물 표시
레이블이 error handler인 게시물을 표시합니다. 모든 게시물 표시

2015년 8월 31일 월요일

Oracle(OCI Library) Error 처리

Oracle(OCI Library) Error 처리



1. 에러핸들러(Error handler) 이용


#include "ocilib.h"

void err_handler(OCI_Error *err)
{
  printf("code  : ORA-%05i\n"
         "msg   : %s\n"
         "sql   : %s\n",
         OCI_ErrorGetOCICode(err), 
         OCI_ErrorGetString(err),
         OCI_GetSql(OCI_ErrorGetStatement(err)));
}
  
int main()
{
  OCI_Connection *cn;
  
  if (!OCI_Initialize(err_handler, NULL, OCI_ENV_DEFAULT))
        return EXIT_FAILURE;
  
  cn = OCI_ConnectionCreate("wrong_db", "wrong_usr", "wrong_pwd", 
                            OCI_SESSION_DEFAULT);
  
  /* ... application code here ... */
  
  OCI_Cleanup();
  
  return EXIT_SUCCESS;
}



2. 함수(Function)에서 에러 출력


#include "ocilib.h"
  
int main()
{
  OCI_Connection *cn;
  
  if (!OCI_Initialize(NULL, NULL, OCI_ENV_DEFAULT | OCI_ENV_CONTEXT))
    return EXIT_FAILURE;
  
  cn = OCI_ConnectionCreate("wrong_db", "wrong_usr", "wrong_pwd", OCI_SESSION_DEFAULT);
  
  if (cn == NULL)
  {
     OCI_Error *err = OCI_GetLastError();
     printf("errcode %d, errmsg %s", OCI_ErrorGetOCICode(err),  OCI_ErrorGetString(err));
  }
  
  OCI_Cleanup();
  
  return EXIT_SUCCESS;
}


자세한 내용은 여기로.