MySQL 저장 프로시저에서 END IF 문 사용하기
MySQL에서 조건 분기를 처리할 때 IF ... THEN ... ELSE ... END IF 구문을 사용합니다. 저장 프로시저 내부에서 조건에 따라 다른 로직을 실행해야 할 때 매우 유용하며, 반드시 END IF로 블록을 닫아주어야 문법 오류 없이 정상적으로 동작합니다.
END IF 문의 기본 문법
MySQL에서 END IF 문을 포함한 IF 문의 기본적인 작성 형식은 다음과 같습니다.
IF yourCondition THEN
yourStatement
ELSE
yourStatement
END IF;
- yourCondition: 평가할 조건식입니다. 조건이 참(TRUE)이면 THEN 이후의 문장이 실행됩니다.
- ELSE: 조건이 거짓(FALSE)일 경우 실행될 문장을 지정합니다. ELSE는 생략할 수 있습니다.
- END IF: IF 블록의 끝을 표시하며, 세미콜론(;)으로 마무리해야 합니다.
저장 프로시저 생성 예제
다음은 END IF 문을 실제로 활용하여 저장 프로시저를 생성하는 예제입니다. 입력받은 값이 10보다 작은지 큰지를 판단하여 결과를 출력합니다.
mysql> DELIMITER //
mysql> CREATE PROCEDURE Sp_Test( IN value INT )
-> BEGIN
-> IF value < 10 THEN
-> select 'Your value is less than 10';
-> ELSE
-> select 'Your value is greater than 10';
-> END IF;
->
-> END //
Query OK, 0 rows affected (1.47 sec)
mysql> DELIMITER ;
위 코드에서 DELIMITER //를 사용한 이유는 저장 프로시저 내부의 세미콜론(;)이 MySQL 클라이언트에서 문장 종료로 해석되는 것을 방지하기 위함입니다. 프로시저 생성이 완료되면 DELIMITER ;로 원래 구분자를 복원합니다.
저장 프로시저 호출 방법
생성된 저장 프로시저는 CALL 명령어를 통해 호출할 수 있습니다.
기본 문법은 다음과 같습니다.
CALL yourStoredProcedureName();
이제 앞서 만든 저장 프로시저에 값 15를 전달하여 호출해 보겠습니다.
mysql> CALL Sp_Test(15);
실행 결과 확인
입력값 15는 10보다 크므로 ELSE 절의 문장이 실행되어 다음과 같은 결과가 출력됩니다.
+-------------------------------+
| Your value is greater than 10 |
+-------------------------------+
| Your value is greater than 10 |
+-------------------------------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.01 sec)
정리 및 주의사항
MySQL 저장 프로시저에서 END IF 문을 사용할 때 기억해야 할 핵심 사항은 다음과 같습니다.
- IF 블록은 반드시 END IF;로 종료해야 하며, 세미콜론을 누락하면 문법 오류가 발생합니다.
- 저장 프로시저를 생성할 때는 BEGIN ... END 블록 안에 IF 문을 작성해야 합니다.
- 여러 조건을 처리해야 한다면 ELSEIF를 활용할 수도 있습니다.
- 클라이언트와의 충돌을 피하려면 DELIMITER 변경 후 반드시 원래대로 되돌려야 합니다.
이처럼 END IF 문을 올바르게 사용하면 저장 프로시저 안에서 조건별로 유연하게 로직을 분기 처리할 수 있습니다.