SQL

[Maria] Cursor 사용하기

junnnhhh 2024. 1. 23. 23:24
728x90

Cursor : 쿼리문에 의해서 반환되는 결과값들을 저장하는 메모리 공간

Fetch : 커서에서 원하는 결과값을 추출하는 것

 

Cursor의 경우 프로시저 내부에서 사용이 가능하다.

 

선언하는 부분

DECLARE x INT;
-- Cursor에 저장된 각 행을 받아서 저장할 변수
DECLARE done INT DEFAULT FALSE;
-- done : cursor에 더 이상 조회할 행 존재 여부를 표시해주는 변수이다.
DECLARE cur1 CURSOR FOR SELECT i FROM test.c1;
-- SELECT i FROM test.c1 로 조회한 행들을 cur1로 선언한 CURSOR에 저장을 한다.
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
-- 더 이상 조회할 행이 없으면 TRUE로 변경하라는 구문.

 

선언해주는 부분에서는

Cursor와 Cursor에 저장된 행을 조회하면서 더 조회할 행 존재 유무를 저장할 변수를 선언해준다.

 

Cursor 사용 부분

OPEN cur1; -- Cursor 열기

read_loop : LOOP -- LOOP의 namespace를 read_loop으로 설정
	FETCH cur1 INTO x;
    -- 현재 cur1에서 조회하고 있는 행을 FETCH 해서 x에 저장
    
    IF done THEN
    	LEAVE read_loop;
    END IF;
    -- 더 이상 조회할 행이 없다면 read_loop 종료.
    
    /*
    	... 작업 요약
    */
    
END LOOP;
CLOSE cur1; -- Cursor 닫기;

 

MariaDB 공식 Document - Cursor

https://mariadb.com/kb/en/cursor-overview/

728x90