SQL

SQL - FETCH

Kim-Raon 2024. 1. 5. 21:00

FETCH는 SQL에서 결과 집합에서 행을 가져오는 명령어입니다. FETCH 명령어는 주로 CURSOR와 함께 사용되며, 특히 서버 측에서 트랜잭션을 관리하거나 복잡한 조회 작업을 수행할 때 유용합니다.

일반적으로 FETCH 명령어는 CURSOR를 열고, OPEN, FETCH, CLOSE의 세 단계로 나뉩니다:

  1. OPEN:
    • CURSOR를 열어 결과 집합을 가리키는 포인터를 생성합니다.
    • DECLARE cursor_name CURSOR FOR SELECT column1, column2 FROM table_name WHERE condition; OPEN cursor_name;
  2. FETCH:
    • CURSOR를 통해 결과 집합에서 행을 가져옵니다. FETCH 명령어는 반복적으로 호출하여 여러 행을 가져올 수 있습니다.
    • FETCH cursor_name INTO variable1, variable2;
    • FETCH 명령어는 변수에 결과 집합의 현재 행을 가져오기 위해 사용됩니다.
  3. CLOSE:
    • CURSOR를 닫아서 리소스를 해제합니다.
    • CLOSE cursor_name;

FETCH 명령어는 일반적으로 FORWARD ONLY 형태의 CURSOR에서 사용되며, SCROLL 형태의 CURSOR에서는 FETCH 대신에 FETCH NEXT, FETCH PRIOR, FETCH FIRST, FETCH LAST 등과 함께 사용될 수 있습니다.

아래는 FETCH 명령어의 간단한 사용 예제입니다:

DECLARE my_cursor CURSOR FOR SELECT employee_id, employee_name FROM employees;
OPEN my_cursor;

-- 여러 행을 가져오기 위해 반복문 사용
FETCH my_cursor INTO @emp_id, @emp_name;
WHILE @@FETCH_STATUS = 0
BEGIN
    -- 처리 로직
    PRINT 'Employee ID: ' + CONVERT(VARCHAR, @emp_id) + ', Employee Name: ' + @emp_name;

    -- 다음 행 가져오기
    FETCH my_cursor INTO @emp_id, @emp_name;
END

CLOSE my_cursor;

이 예제에서는 CURSOR를 열고, FETCH를 사용하여 결과 집합에서 행을 가져오고 처리하는 반복문이 사용되고, 마지막으로 CURSOR를 닫습니다.