MySQL 저장 프로시저(Stored Procedure) 내에서 조건에 따라 다른 로직을 실행해야 할 때 IF-ELSE 문을 사용할 수 있습니다. 이번 글에서는 저장 프로시저에서 IF-ELSE를 구현하는 기본 문법과 실제 예제를 단계별로 살펴보겠습니다.
IF-ELSE 기본 문법
MySQL에서 IF-ELSE 문의 기본적인 작성 형식은 다음과 같습니다.
IF yourCondition THEN
yourStatement1;
ELSE
yourStatement2;
END IF;조건(yourCondition)이 참(TRUE)이면 첫 번째 문장이 실행되고, 거짓(FALSE)이면 ELSE 블록의 두 번째 문장이 실행됩니다. 반드시 END IF;로 조건문을 종료해야 한다는 점에 유의하세요.
저장 프로시저 생성 예제
개념을 이해하기 위해, 입력받은 값이 1000보다 큰지 판단하는 저장 프로시저를 만들어 보겠습니다.
mysql> DELIMITER //
mysql> CREATE PROCEDURE If_else_stored_demo(value INT)
-> BEGIN
-> IF value > 1000 THEN
-> SELECT "입력한 값은 1000보다 큽니다";
-> ELSE
-> SELECT "입력한 값은 1000 이하입니다";
-> END IF;
-> END
-> //
Query OK, 0 rows affected (0.00 sec)
mysql> DELIMITER ;위 코드의 핵심 포인트는 다음과 같습니다.
DELIMITER 변경: 프로시저 본문 내부의 세미콜론(;)이 SQL 구분자로 해석되지 않도록 DELIMITER //로 임시 변경합니다. 프로시저 생성이 끝나면 DELIMITER ;로 원래대로 되돌립니다.
조건 판단: 매개변수 value가 1000보다 크면 첫 번째 메시지를, 그렇지 않으면 ELSE 블록의 메시지를 반환합니다.
저장 프로시저 호출하기
생성된 프로시저는 CALL 명령어로 호출할 수 있습니다. 테스트를 위해 500이라는 값을 전달해 보겠습니다.
mysql> CALL If_else_stored_demo(500);
실행 결과 확인
500은 1000보다 작으므로 ELSE 블록이 실행되어 아래와 같은 결과가 출력됩니다.
+--------------------------------------+ | 입력한 값은 1000 이하입니다 | +--------------------------------------+ | 입력한 값은 1000 이하입니다 | +--------------------------------------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.00 sec)
정리
MySQL 저장 프로시저에서 IF-ELSE를 사용하면 입력값에 따라 분기 처리가 가능합니다. 핵심은 IF ... THEN ... ELSE ... END IF; 구조를 정확히 지키고, 프로시저 생성 시 DELIMITER 설정을 올바르게 관리하는 것입니다. 더 복잡한 조건이 필요하다면 ELSEIF를 활용해 여러 분기를 추가할 수도 있습니다.