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
728x90