티스토리 뷰

앞서 select 결과 1건 가져오는것과 비슷하지만 select 결과가 여러건 이면 cursor와 fetch next를 이용해서 처리한다.

소스를 보는게 빠르다^^

main(int argc, char *argv[]){

$char work1[100];

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

EXEC SQL connect to "dbname";

EXEC SQL DECLARE test_cur SCROLL CURSOR FOR

SELECT a
FROM test;

EXEC SQL OPEN test_cur;

while(1){

  EXEC SQL FETCH NEXT test_cur INTO :work1;

if(sqlca.sqlcode==100){
break;
}else if(sqlca.sqlcode!=0)
printf("error=[%d]\n",sqlca.sqlcode);
}

printf("work1=[%s]\n",work1;
}

EXEC SQL CLOSE test_cur;
EXEC SQL FREE test_cur;
}

커서(Cursor)1
Cursor의 이해
Cursor는 select구문에 의해 선택된 row들을 가리키고 있는 일종의 marker라고 볼수 있음.
여러개의 row를 가져오는 select문의 결과에 대해 처리하기 위해서 필요함.

Cursor의 사용순서
DECLARE
SELECT구문에 대해 사용할 cursor의 이름 할당
Application memory에 cursor block setting

OPEN
SELECT구문의 문법을 체크하고, 질의에 만족하는 row들에 대해 논리적인 set을 open
Server memory에 cursor block setting
Application memory에 data buffer setting

FETCH
실질적은 row를 database로 부터 가져옴.
fetch next, fetch prior, fetch relative n, fetch absolute n 등

CLOSE
Cursor의 사용종료를 의미.
사용하던 temp table 삭제됨
Cursor에 할당된 buffer 반환
사용하던 lock을 release

FREE
Cursor가 사용하던 application과 server측의 자원을 반환
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
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
글 보관함