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