728x90
반응형
1. 커서의 개요
◎ 커서(Cursor)
▷ 스토어드 프로시저 내부에 사용
▷ 일반 프로그래밍 언어의 파일 처리와 방법이 비슷함
▶ 행의 집합을 다루기 편리한 기능 제공
▷ 테이블에서 여러 개의 행을 쿼리한 후, 쿼리의 결과인 행 집합을 한 행씩 처리하기 위한 방식
2. 커서의 처리 순서
◎ 커서를 이용한 예제
-- CURSOR 커서 사용 -- 고객의 평균 키를 구하는 스토어드 프로시저 use sqldb; drop procedure if exists cursorProc; delimiter $$ create procedure cursorProc() begin declare userHeight int; -- 고객의 키 declare cnt int default 0; -- 고객의 수 declare totalHeight int default 0; -- 고객의 키 합계 declare endOfRow boolean default false; -- 행의 끝인지 확인 -- 커서 선언 declare userCuror cursor for select height from usertbl; declare continue handler for not found set endOfRow = true; -- 행의 끝이면 endOfRow 변수에 true를 대입 open userCuror; -- 커서 열기 cursor_loop : loop fetch userCuror into userHeight; -- 고객 키를 하나씩 대입 if endOfRow then -- endOfRow 더이상 읽을 행이 없으면 loop 빠져 나오기 leave cursor_loop; end if; set cnt = cnt + 1; -- 고객 수를 누적 set totalHeight = totalHeight + userHeight; end loop cursor_loop; select concat('고객의 키 평균 ==> ', (totalHeight/cnt)); close userCuror; -- 커서 닫기 end $$ delimiter ; call cursorProc(); -- 고객의 키 평균 ==> 175.8000 반환
프로시저 내부에 커서를 사용해본 예제입니다.
1. 프로시저 내부에 커서를 생성합니다.
2. 커서를 사용하면서 한 행씩 읽으며 변수에 값들을 누적합니다.
3. 마지막으로 출력해줍니다.
커서는 프로시저 내부에서 사용할 수 있고 테이블에서 여러 개의 행을 쿼리한 후, 행 집합을 한 행씩 처리하는 방법입니다.
프로시저를 사용할 때는 많이 사용할 것 같아요!
많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~
728x90
반응형
'BackEnd > DB(SQL)' 카테고리의 다른 글
[DB_MySQL] 이것이 MySQL이다 ch11 전체 텍스트 검색과 파티션 1 (전체 텍스트 검색) (0) | 2023.02.13 |
---|---|
[DB_MySQL] 이것이 MySQL이다 ch10 스토어드 프로그램 4(트리거, trigger) (0) | 2023.02.12 |
[DB_MySQL] 이것이 MySQL이다 ch10 스토어드 프로그램 2(스토어드 함수) (0) | 2023.02.11 |
[DB_MySQL] 이것이 MySQL이다 ch10 스토어드 프로그램 1(스토어드 프로시저, Stored Procedure) (0) | 2023.02.10 |
[DB_MySQL] 이것이 MySQL이다 ch09 인덱스 1(클러스터형 인덱스, 보조 인덱스) (0) | 2023.02.09 |