개요
2025.02.26-[Database] Stored Procedure - 정의/호출, 2025.02.27-[MySQL] Stored Procedure - 변수에서 MySQL에서 Stored Procedure, 그리고 Stored Procedure의 내부 변수를 선언하고 사용하는 방법을 알아보았다.
Stored Procedure의 큰 장점 중 하나가 바로 프로그램처럼 조건 논리를 구현하여 실행 흐름을 제어할 수 있다는 것이다. 이번 글에서는 Stored Procedure에서 사용할 수 있는 조건문에 대해서 알아본다.
IF
IF문은 기본적인 조건 구문을 구현한다.
IF search_condition THEN statement_list
[ELSEIF search_condition THEN statement_list] ...
[ELSE statement_list]
END IF
예시 )
아래 예시는 올해 연도가 홀수인지 짝수인지 판단하는 프로시저이다.
CREATE PROCEDURE test_procedure(
)
BEGIN
DECLARE cur_year INT DEFAULT YEAR(NOW());
DECLARE flag varchar(5);
IF MOD(cur_year, 2) = 0
THEN SET flag = 'EVEN';
ELSE SET flag = 'ODD';
END IF;
SELECT cur_year, flag;
END
;
의도한 대로 올해는 2025년으로 홀수 연도라는 것을 알 수 있다.
CASE
CASE는 복잡한 조건 구조를 구현한다.
CASE case_value
WHEN when_value THEN statement_list
[WHEN when_value THEN statement_list] ...
[ELSE statement_list]
END CASE
-- 또는
CASE
WHEN search_condition THEN statement_list
[WHEN search_condition THEN statement_list] ...
[ELSE statement_list]
END CASE
첫 번째 구문이 case_value라는 특정 값이 조건을 만족하는지를 판단하여 실행 흐름을 제어하는 반면, 두 번째 구문은 각 조건의 만족 여부에 따라 실행 흐름을 제어한다.
예시 )
아래 예시는 위 IF문으로 작성한 프로시저를 CASE문을 사용해 구현한 것이다.
CREATE PROCEDURE test_procedure(
)
BEGIN
DECLARE cur_year INT DEFAULT YEAR(NOW());
DECLARE flag varchar(5);
CASE MOD(cur_year, 2)
WHEN 0 THEN SET flag = 'EVEN';
WHEN 1 THEN SET flag = 'ODD';
END CASE;
SELECT cur_year, flag;
END
;
IF문으로 작성한 프로시저와 동일한 결과임을 확인할 수 있다.
참고 문서
https://dev.mysql.com/doc/refman/8.4/en/if.html
https://dev.mysql.com/doc/refman/8.4/en/case.html
728x90