데이터 조회 시, 십만 건 정도까지는 한 번에 조회가 가능하지만
조회해야할 데이터가 천만 건, 1억 건 이상으로 커지면 일반 select문으로 전체 데이터를 조회하는 것은 불가능하다.
이때 DB cursor로 대량의 데이터도 조회하고 처리할 수 있다.
DATA : dbcur TYPE cursor, "커서
lt_tmp TYPE TABLE OF sflight. "타겟 테이블
OPEN CURSOR WITH HOLD dbcur FOR
SELECT *
FROM sflight.
cursor
라는 TYPE으로 cursor 변수를 선언한다.OEPN CURSOR
이라는 구문과 함께 cursor로 실행할 Query문을 설정해준다.DO.
*- 반복 1회마다 설정한 건수만큼 조회
FETCH NEXT CURSOR dbcur
INTO CORRESPONDING FIELDS OF TABLE lt_tmp
PACKAGE SIZE 50. "몇 건씩 나눠서 조회할 것인지 설정
*- 더 이상 데이터가 조회되지 않을때 반복문 중단
IF sy-subrc = 0.
EXIT.
ENDIF.
*- 설정한 건수만큼 조회된 lt_tmp 테이블로 다른 작업을 수행
IF lt_tmp IS NOT INITIAL.
" 필요한 데이터 처리하거나 다른 변수에 저장하기
ENDIF.
ENDDO.
CLOSE CURSOR dbcur.
감사합니다.