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

MySQL 저장 프로시저에서 여러 조건을 결합한 IF 문 사용법

MySQL의 저장 프로시저(Stored Procedure)에서는 AND 또는 OR 연산자를 활용하여 여러 조건을 결합한 IF 문을 작성할 수 있습니다. 이를 통해 하나의 조건문 안에서 복잡한 논리 판단을 처리할 수 있습니다.

기본 문법

여러 조건이 있는 IF 문의 기본적인 문법은 다음과 같습니다.

DECLARE X int;
DECLARE Y int;
SET X = value1;
SET Y = value2;
IF ( (X < Y AND X > value1 AND Y > value2) OR X != anyValueToCompare ) THEN
    yourStatement;
ELSE
    yourStatement;
END IF;

괄호를 사용하면 AND와 OR 조건의 우선순위를 명확하게 구분할 수 있으므로, 복잡한 조건식을 작성할 때는 괄호로 그룹화하는 것이 좋습니다.

저장 프로시저 예제

위 문법을 실제로 이해하기 위해 저장 프로시저를 하나 생성해 보겠습니다. 먼저 구분자(Delimiter)를 변경한 후 프로시저를 만듭니다.

mysql> DELIMITER //
mysql> create procedure SP_IFELSEDEMO()
    -> BEGIN
    -> DECLARE X int;
    -> DECLARE Y int;
    -> SET X=100;
    -> SET Y=400;
    -> IF ( (X < Y AND X > 99 AND Y > 300) OR X != 10 ) THEN
    ->     SELECT 'Logic is Correct';
    -> ELSE
    ->     SELECT 'Logic is not Correct';
    -> END IF;
    -> END;
    -> //
Query OK, 0 rows affected (0.27 sec)
mysql> DELIMITER ;

저장 프로시저 호출하기

프로시저 생성이 완료되면 CALL 명령어를 사용하여 실행할 수 있습니다.

mysql> call SP_IFELSEDEMO();

출력 결과

+------------------+
| Logic is Correct |
+------------------+
| Logic is Correct |
+------------------+
1 row in set (0.04 sec)
Query OK, 0 rows affected (0.07 sec)

동작 원리 분석

이 예제에서는 변수 X에 100, Y에 400을 할당했습니다. IF 문의 첫 번째 조건 그룹을 살펴보면 다음과 같습니다.

  • X < Y : 100 < 400 → 참
  • X > 99 : 100 > 99 → 참
  • Y > 300 : 400 > 300 → 참

AND 연산자로 연결된 세 조건이 모두 참이므로 괄호 안의 조건 그룹 전체가 참이 됩니다. 따라서 OR 뒤의 조건(X != 10)을 평가할 필요 없이 전체 조건식이 참으로 판정되어 'Logic is Correct'가 출력된 것입니다.

참고 사항

  • 저장 프로시저 내부에서는 단순 IF 문 대신 IF ~ ELSEIF ~ ELSE 구조를 사용하여 여러 분기를 처리할 수도 있습니다.
  • MySQL 클라이언트에서 프로시저를 정의할 때는 세미콜론(;)과 프로시저 종료 문자 충돌을 피하기 위해 DELIMITER 명령으로 구분자를 임시 변경하는 것이 일반적입니다.
  • 조건식에서 비교 연산자(<, >, =, != 등)와 논리 연산자(AND, OR, NOT)를 자유롭게 조합할 수 있습니다.