Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 저장 프로시저에서 IF...ELSE 조건문 설정하는 방법

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를 추가로 사용하여 더 복잡한 조건 분기도 처리할 수 있습니다.