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

MySQL 저장 프로시저에서 IF…THEN…END IF 문으로 레코드 표시하기

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 문을 함께 활용하는 것도 좋은 방법입니다.