티스토리 뷰

인터넷을 뒤져도 proc나 esql에 대한 자료가 없어서 가장 기초적인 select 프로그램을 짜봤다.

이것만 마스터 한다면 어떠한 프로씨 프로그램도 코딩 기능하리라 본다.

참조로 c언어는 자바와 달라서 error handling을 안한다. 즉, 자바는 에러, exception이 발생하면 자동으로 exception handling을 하려 에러를 보여주는데 c언어는 그냥 에러가 발생해도 넘어간다.

즉 개발자가 일일히 에러가 발생할 만한곳에 에러 핸들링 코딩을 하지 않으면  자바처럼 에러를 뱉고 끝나는게 아니라 그냥 넘어간다.

자바를 먼저 코딩한 사람들은 이게 이상하다고 생각할 수 있는데 어쩔때는 장점도 될 수 있다. 구지 에러나도 안멈춰도 될만한 곳에는 그냥 넘어가니 좋다.

그러나!

일반적으로 에러코딩을 넣어야 어느부분에서 에러가 났는지 나중에 디버깅할 수 있다.

가장 간단한 proc,esql select 코딩을 해보겠다. 여기서는 인포믹스 db를 사용하고 esql로 한다. proc와 거의 유사하다.

main(int argc, char *argv[])
{
  EXEC SQL BEGIN DECLARE SECTION;
  char work1[100];
  EXEC SQL END DECLARE SECTION;

  memset(work1,0x00,sizeof(work1));

  $connect to "dbname";

  EXEC SQL
    SELECT first 1 a
    INTO :work1
    FROM test;

  if(sql.sqlcode!=0){
    //에러처리
  }
  rtrim(&work1);
  printf(work1);

}

rtrim 함수는 이전 포스팅에 나와 있다. 말그대로 우측 공백을 없애준다.

sqlcal.sqlcode 부분은 에러 처리를 하는 부분이다. 앞서 얘기했다시피 c언어는 에러 핸들링을 안하기 때문에 이렇게 쿼리마다 에러 핸들링 코드를 써줘야 어디서 에러가 났는지 알 수 있다.

INTO라는 키워드를 빼먹지 말고 써야 한다. INTO :work1 처럼 해야 캐릭터 변수 work1에 컬럼 a의 값이 들어간다.

DECLARE SECTION 부분은 다 없애도
$char work1[100];

이렇게만 써도 된다.






}
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함