MySQL에서 저장 프로시저(Stored Procedure) 내부에 조건 로직을 구현하려면 IF...ELSE 문을 사용하면 됩니다. IF...ELSE 문은 주어진 조건이 참인지 거짓인지에 따라 서로 다른 코드 블록을 실행할 수 있게 해주는 기본적인 제어문입니다.
IF...ELSE 기본 문법
MySQL에서 IF...ELSE 문의 기본적인 작성 형식은 다음과 같습니다.
IF yourCondition THEN
yourStatement1;
ELSE
yourStatement2;
END IF;조건(yourCondition)이 참이면 첫 번째 문장이 실행되고, 그렇지 않으면 ELSE 블록의 문장이 실행됩니다.
저장 프로시저에 IF...ELSE 적용하기
이제 위 문법을 실제 저장 프로시저에 적용해 보겠습니다. 아래 예제는 입력받은 값이 10보다 큰지 여부를 판단하여 결과를 출력하는 프로시저입니다.
mysql> DELIMITER //
mysql> CREATE PROCEDURE IF_ELSE_DEMO(IN value int)
-> BEGIN
-> SET @val = value;
-> IF @val > 10 THEN
-> SELECT CONCAT(@val, ' is greater than 10');
-> ELSE
-> SELECT CONCAT(@val, ' is less than 10');
-> END IF;
-> END;
-> //
Query OK, 0 rows affected (0.16 sec)프로시저 생성이 완료되면 구분자(Delimiter)를 원래대로 되돌려 줍니다.
mysql> DELIMITER ;
저장 프로시저 호출하기
생성된 저장 프로시저는 CALL 명령어를 사용하여 호출할 수 있습니다.
mysql> CALL IF_ELSE_DEMO(18);
위 프로시저를 실행하면 입력값 18이 10보다 크기 때문에 다음과 같은 결과가 출력됩니다.
+------------------------------------+ | concat(@val,' is greater than 10') | +------------------------------------+ | 18 is greater than 10 | +------------------------------------+ 1 row in set (0.03 sec) Query OK, 0 rows affected (0.04 sec)
이처럼 IF...ELSE 문을 활용하면 저장 프로시저 안에서 입력값에 따라 분기 처리를 손쉽게 구현할 수 있습니다. 조건이 세 개 이상 필요한 경우에는 ELSEIF를 추가로 사용하여 더 복잡한 조건 분기도 처리할 수 있습니다.