Don't forget to smile
[혼자 공부하는 SQL] Chapter 7-2. 스토어드 함수와 커서 본문
스토어드 함수 : MySQL에서 제공하는 내장 함수 외 직접 제작한 함수
스토어드 프로시저와 모양은 비슷하지만 RETURNS 예약어를 통해 하나의 값을 반환해야 함
커서 : 스토어드 프로시저 안에서 한 행씩 처리할 때 사용하는 프로그래밍 방식
<스토어드 함수>
스토어드 함수는 프로시저와 달리 SELECT 문으로 호출하며, 매개변수는 전부 입력 매개변수임
DELIMITER $$
CREATE FUNCTION 스토어드_함수_이름(매개변수)
RETURNS 반환형식
BEGIN
~~
RETURN 반환값;
END $$
DELIMITER ;

1) 우선 스토어드 함수 사용을 위해 함수 생성 권한 설정

2) 위 코드는 2개의 정수형 변수 number1과 number2를 입력 받아 정수 합계를 반환하는 코드

3) 위 코드는 정수형 변수 데뷔 연도를 받아 활동 기간을 출력하는 코드
이 때 SELECT ~ INTO 문을 활용하면 스토어드 함수의 반환값을 변수에 저장하는 것이 가능

4) 스토어드 함수의 삭제는 DROP FUNCTION 문 사용
<커서 처리>

1) 우선 커서에 사용되는 변수를 선언하여야 함
변수는 인원수(memNumber), 합계(totNumber), 읽은 행의 수(cnt), 행의 끝(endOfRow) 총 4가지
이 때 합계와 읽은 행의 수는 누적을 해야 하므로 초기값을 0, 행의 끝은 아직 끝이 아니므로 False로 초기화

2) 다음으로 커서를 선언
커서는 회원 테이블의 각 그룹별 인원수를 구하는 SELECT 문으로 작성

3) 커서 작성이 종료되면 반복 조건을 설정
행이 끝나면 반복문을 멈춰야 하므로 endOfRow 변수가 TRUE가 될 때 종료되도록 설정

4) OPEN 명령을 통해 커서를 연 후 커서의 행 반복을 설정
행 반복은 LOOP와 END LOOP 사이의 모든 내용이 반복됨
이 때 FETCH는 한 행씩 읽어오는 명령, LEAVE는 해당 명령을 탈출하는 명령임

5) 반복을 빠져나오면 최종 목표인 회원의 평균 인원 수를 계산
이후 CLOSE 명령을 통해 커서 종료

6) CALL 명령을 통해 커서를 실행하면 정상적으로 결과값이 출력
'SQL' 카테고리의 다른 글
| [혼자 공부하는 SQL] Chapter 8-1. 파이썬 개발 환경 준비 (0) | 2022.12.22 |
|---|---|
| [혼자 공부하는 SQL] Chapter 7-3. 자동 실행되는 트리거 (0) | 2022.12.16 |
| [혼자 공부하는 SQL] Chapter 7-1. 스토어드 프로시저 사용 방법 (0) | 2022.12.11 |
| [혼자 공부하는 SQL] Chapter 6-3. 인덱스의 실제 사용 (0) | 2022.12.09 |
| [혼자 공부하는 SQL] Chapter 6-2. 인덱스의 내부 작동 (0) | 2022.12.09 |