본문 바로가기

C-Language/Pro C, Cursor example

Pro C, CURSOR example

Pro C CURSOR 예제

 Pro C에서 커서는 다수개의 레코드가 저장된 데이터 구조를 의미한다.
SQL문장의 질의결과가 다수개의 레코드를 리턴하는 경우라면 CURSOR를 사용하여야 한다.

#include <stdio.h>
#include "sqlca.h"

int main(void) {

 EXEC SQL BEGIN DECLARE SECTION;
  char *connstr = "scott/ojtit@orcl";
  int empno;
  VARCHAR ename[20];
  char hiredate[20];
 EXEC SQL END DECLARE SECTION;
 
 EXEC SQL CONNECT :connstr;
 
 if(sqlca.sqlcode == 0) {
  printf("오라클 연결 성공\n");
 }else{
  printf("오류 : 오라클 연결 실패\n");
 }
 
 EXEC SQL
  DECLARE emp_cur CURSOR FOR
  SELECT
         empno,ename,hiredate
  FROM
         EMP
  WHERE
        deptno = 10;
   
 EXEC SQL OPEN emp_cur;
 
 EXEC SQL WHENEVER NOT FOUND DO break;
 
 while(1) {
  EXEC SQL FETCH emp_cur INTO :empno, :ename, :hiredate;
  ename.arr[ename.len] = '\0';
  printf("empno=%d, ename=%s, hiredate=%s \n", empno, ename.arr, hiredate);
 }
 
 EXEC SQL CLOSE emp_cur;
 
 EXEC SQL ROLLBACK WORK RELEASE;

 printf("프로그램 종료\n");
 return 0;
 
}