MariaDB 커서 사용법: 선언, 열기, 가져오기, 닫기
커서는 MariaDB에서 복잡한 쿼리 결과를 한 행씩 처리할 때 사용되는 도구입니다. 이 글에서는 커서의 개념과 사용 목적, 선언, 열기, 가져오기, 닫기 방법에 대해 알아봅니다.
커서의 개념과 사용 목적
커서는 쿼리 결과 집합을 한 행씩 순차적으로 처리할 수 있도록 하는 데이터베이스 객체입니다. 복잡한 데이터 처리를 필요로 하는 경우, 예를 들어 행별로 계산이나 검증이 필요한 경우 유용합니다.
커서 선언
커서를 선언하려면 DECLARE
문을 사용합니다. 다음은 커서 선언 예제입니다.
DECLARE cursor_name CURSOR FOR
SELECT column1, column2
FROM table_name;
커서 열기
선언된 커서를 열려면 OPEN
문을 사용합니다.
OPEN cursor_name;
커서 가져오기
커서에서 데이터를 가져오려면 FETCH
문을 사용합니다.
FETCH cursor_name INTO variable1, variable2;
커서 닫기
커서를 다 사용한 후에는 CLOSE
문을 사용하여 닫아야 합니다.
CLOSE cursor_name;
커서를 사용한 예제
다음은 커서를 사용한 간단한 예제입니다.
DELIMITER //
CREATE PROCEDURE CursorExample()
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE emp_name VARCHAR(100);
DECLARE emp_salary DECIMAL(10, 2);
-- 커서에 사용할 쿼리를 정의합니다. 여기서는 employees 테이블에서 employee_name과 salary를 선택합니다.
DECLARE employee_cursor CURSOR FOR
SELECT employee_name, salary
FROM employees;
-- 커서에서 더 이상 읽을 데이터가 없을 때 처리하기 위한 핸들러를 선언합니다.
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
-- 커서를 열어 쿼리 결과를 읽을 준비를 합니다.
OPEN employee_cursor;
read_loop: LOOP
-- 커서에서 데이터를 한 행씩 가져옵니다.
FETCH employee_cursor INTO emp_name, emp_salary;
-- 더 이상 가져올 행이 없으면 루프를 종료합니다.
IF done THEN
LEAVE read_loop;
END IF;
-- 데이터 처리 로직: 예를 들어, 특정 조건에 따라 추가 작업을 수행할 수 있습니다.
IF emp_salary > 60000 THEN
-- 예시로, 연봉이 60000 이상인 직원의 이름과 연봉을 출력합니다.
SELECT emp_name, emp_salary;
END IF;
END LOOP;
-- 커서를 닫아 자원을 해제합니다.
CLOSE employee_cursor ;
END //
DELIMITER ;
▼ 커서 사용 예제 호출 결과

참고할 만한 사이트
더 자세한 내용은 다음 사이트들을 참고하세요.
관련 이전 게시글
- MariaDB 스토어드 프로시저 기본 사용법: 생성, 호출, 삭제 방법
- MariaDB 변수 사용법
- MariaDB 제어 함수 사용법: IF, IFNULL, NULLIF, CASE
- MariaDB 서브쿼리 사용법
- MariaDB 데이터의 JSON 변환: JSON_OBJECT 함수 사용법
이 글이 도움이 되셨다면 공유 부탁 드립니다.