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

MySQL에서 IF 조건문으로 저장 프로시저 내부에서 다른 저장 프로시저 호출하기

저장 프로시저(Stored Procedure) 안에서 또 다른 저장 프로시저를 호출해야 하는 경우가 종종 있습니다. MySQL에서는 IF 조건문CALL 명령어를 조합하면 간단하게 구현할 수 있습니다. 이 글에서는 입력값에 따라 서로 다른 저장 프로시저를 실행하는 방법을 단계별로 살펴보겠습니다.

기본 문법

저장 프로시저 내에서 다른 저장 프로시저를 호출하는 기본 문법은 다음과 같습니다.

If yourInputValue > 100 then
    call yourProcedureName1();
else
    call yourProcedureName2();
end If;
END

예제용 저장 프로시저 생성

먼저 예제에 사용할 첫 번째 저장 프로시저를 만들어 보겠습니다. 이 프로시저는 'Hello World!!!'라는 문자열을 출력합니다.

mysql> delimiter //
mysql> create procedure Hello_Stored_Procedure()
    -> BEGIN
    -> select 'Hello World!!!';
    -> END
    -> //
Query OK, 0 rows affected (0.18 sec)

다음으로 두 번째 저장 프로시저를 생성합니다. 이 프로시저는 'Hi!!!'라는 문자열을 출력합니다.

mysql> create procedure Hi_Stored_Procedure()
    -> BEGIN
    -> select 'Hi!!!';
    -> END
    -> //
Query OK, 0 rows affected (0.17 sec)

IF 논리가 포함된 저장 프로시저 작성

이제 입력값(IN 매개변수)을 받아, 값이 100보다 크면 Hello_Stored_Procedure를, 그렇지 않으면 Hi_Stored_Procedure를 호출하는 저장 프로시저를 만들어 보겠습니다.

mysql> DELIMITER //
mysql> create procedure test(IN input int)
    -> BEGIN
    -> If input > 100 then
    -> call Hello_Stored_Procedure();
    -> else
    -> call Hi_Stored_Procedure();
    -> end If;
    -> END
    -> //
Query OK, 0 rows affected (0.18 sec)

저장 프로시저 실행 및 결과 확인

구분자(delimiter)를 원래대로 되돌린 후, CALL 명령어로 프로시저를 실행할 수 있습니다. 여기서는 110이라는 값을 전달해 보겠습니다.

mysql> delimiter ;
mysql> call test(110);

입력값 110은 100보다 크므로, IF 조건에 따라 Hello_Stored_Procedure가 실행되어 다음과 같은 결과가 출력됩니다.

+----------------+
| Hello World!!! |
+----------------+
| Hello World!!! |
+----------------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.02 sec)

정리

이처럼 저장 프로시저 내부에서 IF 조건문과 CALL 명령어를 함께 사용하면, 입력값에 따라 분기 처리하면서 다른 저장 프로시저를 유연하게 호출할 수 있습니다. 반대로 100 이하의 값을 전달하면 Hi_Stored_Procedure가 실행되어 'Hi!!!'가 출력되는 것도 직접 확인해 보시기 바랍니다. 이 패턴은 복잡한 비즈니스 로직을 모듈화하고 코드 재사용성을 높이는 데 매우 유용합니다.