MySQL 저장 프로시저(Stored Procedure)에서 IF…THEN…END IF 조건문을 사용하면 특정 조건에 따라 레코드를 삽입하거나 조회할 수 있습니다. 이번 글에서는 테이블 생성부터 저장 프로시저 작성, 호출까지 전 과정을 예제와 함께 단계별로 살펴보겠습니다.
1. 데모 테이블 생성
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable643 (ClientId int); Query OK, 0 rows affected (0.86 sec)
INSERT 문을 이용해 샘플 데이터를 입력합니다.
mysql> insert into DemoTable643 values(1000); Query OK, 1 row affected (0.19 sec)
SELECT 문으로 테이블의 모든 레코드를 확인합니다.
mysql> select *from DemoTable643;
실행 결과는 다음과 같습니다.
+----------+ | ClientId | +----------+ | 1000 | +----------+ 1 row in set (0.00 sec)
2. IF…THEN…END IF 문으로 저장 프로시저 만들기
다음은 IF…THEN…END IF 구문을 활용한 MySQL 저장 프로시저입니다. 인자(argument) 값이 0이면 새 레코드를 삽입하고, 1이면 테이블의 모든 레코드를 조회하도록 작성했습니다.
mysql> DELIMITER //
mysql> CREATE PROCEDURE IF_DEMO(argument int)
BEGIN
DECLARE firstArgument int;
DECLARE secondArgument int;
set firstArgument=0;
set secondArgument=1;
IF firstArgument=argument THEN
insert into DemoTable643 values(2000);
END IF;
IF secondArgument=argument THEN
select *from DemoTable643;
END IF;
END
//
Query OK, 0 rows affected (0.12 sec)
mysql> DELIMITER ;
프로시저의 동작 방식을 정리하면 다음과 같습니다.
- firstArgument = 0: 인자로 0이 전달되면 DemoTable643 테이블에 ClientId가 2000인 레코드를 삽입합니다.
- secondArgument = 1: 인자로 1이 전달되면 SELECT 문을 실행해 테이블의 전체 레코드를 화면에 표시합니다.
3. 저장 프로시저 호출하기
CALL 명령어로 저장 프로시저를 실행합니다. 먼저 인자로 0을 전달하면 레코드가 하나 추가됩니다.
mysql> call IF_DEMO(0); Query OK, 1 row affected (0.17 sec)
이번에는 인자로 1을 전달해 저장 프로시저에서 전체 레코드를 조회해 보겠습니다.
mysql> call IF_DEMO(1);
실행 결과는 다음과 같습니다. 앞서 삽입한 레코드까지 포함해 총 2개의 행이 출력되는 것을 확인할 수 있습니다.
+----------+ | ClientId | +----------+ | 1000 | | 2000 | +----------+ 2 rows in set (0.00 sec) Query OK, 0 rows affected (0.03 sec)
마무리
이처럼 MySQL 저장 프로시저에서 IF…THEN…END IF 문을 사용하면 조건에 따라 서로 다른 동작(데이터 삽입, 조회 등)을 수행하도록 로직을 구성할 수 있습니다. 여러 개의 IF 블록을 나열해 다양한 분기 처리를 구현할 수 있으며, 더 복잡한 조건이 필요하다면 ELSEIF나 CASE 문을 함께 활용하는 것도 좋은 방법입니다.