본문 바로가기
프로그래밍/MySQL

[Stored Procedure] 6. MySQL IF 문법

by 듀빈 2016. 7. 28.
반응형

요약 : 이번 강좌에서는 조건에 맞는 SQL 코드 단락을 실행하는 MySQL IF 문법의 사용방법에 대해서 알아 볼 것이다.


MySQL IF 문은 식의 특정한 조건이나 값에 맞는 SQL 문을 실행할 수 있다. MySQL에서 식을 형성하려면, 문자, 변수 연산자 심지어 함수도 결합할 수 있다. 표현식은 세개의 값(TRUE, FALSE, NULL) 중 하나를 반환한다.

 링크의 IF 함수는 이번 강좌에서의 IF문 과는 차이가 있다.


MySQL IF 문 구조

IF 문의 구조는 아래의 설명을 따른다.

1
2
3
IF expression THEN 
   statements;
END IF;
cs

만약 조건식(expression)이 TRUE 일 경우에는 statements 식을 실행 할 것이고, 그렇지 않으면 다음 상태인 END IF로 넘어 갈 것이다.

IF 문을 순서도(FlowChart) 그림은 아래와 같다.


MySQL IF ELSE 문

이번 케이스에서는 조건식(expression)의 값이 FALSE 일때의 식(statement)을 실행하고 싶다면, 아래처럼 IF ELSE 문을 사용할 수 있다.

1
2
3
4
5
IF expression THEN
   statements;
ELSE
   else-statements;
END IF;
cs

아래는 IF ELSE 문의 순서도 그림이다.


MySQL IF ELSEIF ELSE 문법

만약 다양한 조건 식을 실행하고 싶다면, 아래 처럼 IF ELSEIF ELSE 문을 사용할 수 있다.

1
2
3
4
5
6
7
8
IF expression THEN
   statements;
ELSEIF elseif-expression THEN
   elseif-statements;
...
ELSE
   else-statements;
END IF;
cs

만약 조건식(expression)의 값이 TRUE 이면, statement를 실행할 것이다. 만약 조건식(expression)의 값이 FALSE 이면, MySQL은 다른 조건식(elseif-expression)을 체크하고 다른 조건식의 값이 TRUE이면 elseif-statement를 실행 할 것이다.

IF문은 다양한 조건식을 확인하기 위해 많은 ELSEIF 가지(branch)를 가질 수 있다. 만약 맞는 조건식이 없다면, ELSE에 있는 else-statement 가 실행 될 것이다.


MySQL IF 문 예제

아래의 예제는 어떻게 IF ELSEIF ELSE 문을 사용하는지 보여주고 있다. GetCustomerLevel()은 두개의 매개변수(customer number,  customer level)를 받는 저장 프로시저이다.

첫번째로, customer 테이블로 부터 신용 한도를 받아온다.

그 후, 신용 한도에 맞는 customer level(PLATINUM, GOLD, SILVER)를 결정한다.

매개변수 p_customerlevel은 customer의 level을 저장하고 호출 프로그램에서 사용되어진다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
DELIMITER $$
 
CREATE PROCEDURE GetCustomerLevel(
    IN  p_customerNumber int(11), 
    OUT p_customerLevel  varchar(10))
BEGIN
    DECLARE creditlim double;
 
    SELECT creditlimit INTO creditlim
    FROM customers
    WHERE customerNumber = p_customerNumber;
 
    IF creditlim > 50000 THEN
  SET p_customerLevel = 'PLATINUM';
    ELSEIF (creditlim <= 50000 AND creditlim >= 10000) THEN
        SET p_customerLevel = 'GOLD';
    ELSEIF creditlim < 10000 THEN
        SET p_customerLevel = 'SILVER';
    END IF;
 
END$$
 
DELIMITER ;
cs

아래의 순서도는 customer level을 결정하는 로직을 설명하고 있다.


이번 강좌에서, 조건에 맞는 SQL 코드 를 실행하게 해주는 MySQL IF문을 어떻게 사용하는지에 대해서 배워보았다.


출처 : http://www.mysqltutorial.org/mysql-if-statement/

이전 글 : [Stored Procedure] 5. MySQL Stored Procedure 다중 값 반환

다음 글 : [Stored Procedure] 7. MySQL Case 문법

반응형