SAP CURSOR: 대량의 데이터를 모두 조회&처리하기

·2024년 4월 25일
0

데이터 조회 시, 십만 건 정도까지는 한 번에 조회가 가능하지만

조회해야할 데이터가 천만 건, 1억 건 이상으로 커지면 일반 select문으로 전체 데이터를 조회하는 것은 불가능하다.

이때 DB cursor로 대량의 데이터도 조회하고 처리할 수 있다.

1️⃣ 커서에 Query 설정하기


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문을 설정해준다.
    • 이때 바로 Query가 수행되는 것은 아니다.

2️⃣ Package Size만큼 반복하며 데이터 SELECT

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.
  • DO 반복문 속에서 cursor를 통해 조회가 진행된다.
  • Package Size: 반복문 1회 수행 시 처리할 데이터의 건수
  • 예시
    • 데이터 15,000건을 Package Size 5,000으로 조회
    • 1회: 5,000건 조회 -> 2회: 5,000건 조회 -> 3회: 5,000건 조회 (누적 15,000건)
    • 총 3번의 반복으로 전체 데이터 조회 가능

3️⃣ 커서 닫기

CLOSE CURSOR dbcur.

감사합니다.

참고한 블로그

profile
기록하고 싶은 내용들을 주로 올리고 있습니다

0개의 댓글