Database

[MySQL] Stored Procedure - 조건문

비번변경 2025. 3. 11. 16:38

개요

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