본문 바로가기
카테고리 없음

오라클 커서 사용법 : 명시적 커서와 묵시적 커서

by 반월하 2024. 6. 11.
728x90

SQL문을 실행할 때, 커서(cursor)는 해당 SQL문을 처리하는 정보를 저장하는 메모리 공간을 의미합니다. 이 메모리 공간은 Private SQL Area라고 불리며, 커서는 이 메모리의 포인터를 가리킵니다. 커서를 사용하면 실행된 SQL문의 결과 값을 활용할 수 있으며, 특히 여러 행이 조회되는 경우 각 행별로 특정 작업을 수행할 수 있는 강력한 기능을 제공합니다.

1. 커서란?

커서는 SQL문을 처리하는 정보를 저장하는 메모리 공간의 포인터입니다. 이를 통해 SELECT문이나 데이터 조작어(DML) 같은 SQL문의 결과 값을 사용할 수 있습니다. 커서는 명시적 커서와 묵시적 커서로 나뉩니다.

2. 명시적 커서

명시적 커서는 사용자가 직접 선언하고 사용하는 커서입니다. 다음은 명시적 커서의 사용 단계입니다:

  • 커서 선언(declaration): SQL문과 함께 커서를 선언합니다.
  • 커서 열기(open): 선언된 SQL문을 실행합니다.
  • 커서 사용(fetch): 결과 행 정보를 하나씩 읽어와 변수에 저장한 후 필요한 작업을 수행합니다.
  • 커서 닫기(close): 모든 행의 사용이 끝나면 커서를 종료합니다.

명시적 커서를 사용하면 다양한 LOOP문을 활용해 각 행에 필요한 작업을 반복 수행할 수 있습니다.

예제: 명시적 커서 사용

DECLARE
   CURSOR my_cursor IS
      SELECT column1, column2 FROM my_table;
   my_record my_cursor%ROWTYPE;
BEGIN
   OPEN my_cursor;
   LOOP
      FETCH my_cursor INTO my_record;
      EXIT WHEN my_cursor%NOTFOUND;
      -- 각 행에 대한 작업 수행
   END LOOP;
   CLOSE my_cursor;
END;

3. 묵시적 커서

묵시적 커서는 SQL문을 실행할 때 오라클에서 자동으로 선언되는 커서입니다. 사용자가 OPEN, FETCH, CLOSE를 지정하지 않아도 됩니다. SELECT INTO문이나 DML명령어 실행 시 자동으로 생성 및 처리됩니다.

묵시적 커서 속성

  • SQL%NOTFOUND: 추출된 행이 없으면 true를 반환
  • SQL%FOUND: 추출된 행이 있으면 true를 반환
  • SQL%ROWCOUNT: 추출된 행 수 반환
  • SQL%ISOPEN: 항상 false를 반환

묵시적 커서는 여러 행의 결과를 가지는 경우 사용할 수 없습니다.

4. 커서에 파라미터 사용하기

파라미터를 사용해 상황에 따라 여러 값을 번갈아 사용할 수 있습니다.

예제: 파라미터를 사용하는 커서

DECLARE
   CURSOR my_cursor(p_value NUMBER) IS
      SELECT column1, column2 FROM my_table WHERE column1 = p_value;
   my_record my_cursor%ROWTYPE;
BEGIN
   OPEN my_cursor(100);
   LOOP
      FETCH my_cursor INTO my_record;
      EXIT WHEN my_cursor%NOTFOUND;
      -- 각 행에 대한 작업 수행
   END LOOP;
   CLOSE my_cursor;
END;

결론

오라클 커서는 데이터베이스의 효율적인 데이터 처리를 위한 강력한 도구입니다. 명시적 커서와 묵시적 커서를 상황에 맞게 활용하면 다양한 데이터 처리 작업을 수행할 수 있습니다. 이 글을 통해 커서의 기본 개념과 사용 방법을 이해하고, 실제 데이터 처리에 적용해 보세요.

728x90

댓글