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

MySQL에서 하나의 프로시저로 여러 저장 프로시저 호출하는 방법

MySQL에서는 하나의 저장 프로시저(Stored Procedure) 안에서 다른 여러 개의 저장 프로시저를 순차적으로 호출할 수 있습니다. 이를 활용하면 반복적인 작업을 하나의 진입점으로 묶어 관리할 수 있어 코드의 재사용성과 유지보수성이 크게 향상됩니다.

기본 문법

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

DELIMITER //
CREATE PROCEDURE yourProcedureName()
BEGIN
    CALL yourStoredProcedureName1();
    CALL yourStoredProcedureName2();
    .
    .
    N
END
//
DELIMITER //

실습 예제

이제 위 문법을 실제로 구현해 보겠습니다.

1. 첫 번째 저장 프로시저 생성

'HELLO WORLD !!' 메시지를 출력하는 첫 번째 프로시저를 생성합니다.

mysql> DELIMITER //
mysql> CREATE PROCEDURE hello_message()
    -> BEGIN
    -> SELECT 'HELLO WORLD !!';
    -> END
    -> //
Query OK, 0 rows affected (0.19 sec)

2. 두 번째 저장 프로시저 생성

'HI !!!!' 메시지를 출력하는 두 번째 프로시저를 생성합니다.

mysql> CREATE PROCEDURE hi_message()
    -> BEGIN
    -> SELECT 'HI !!!!';
    -> END
    -> //
Query OK, 0 rows affected (0.11 sec)

mysql> DELIMITER ;

3. 여러 프로시저를 호출하는 메인 프로시저 생성

앞서 만든 두 개의 프로시저를 순서대로 호출하는 새로운 프로시저를 생성합니다.

mysql> DELIMITER //
mysql> CREATE PROCEDURE call_all_stored_procedure()
    -> BEGIN
    -> CALL hello_message();
    -> CALL hi_message();
    -> END
    -> //
Query OK, 0 rows affected (0.26 sec)

mysql> DELIMITER ;

실행 및 결과 확인

이제 메인 저장 프로시저를 호출하면 내부에 정의된 모든 프로시저가 순차적으로 실행됩니다.

mysql> call call_all_stored_procedure();

실행 결과는 다음과 같습니다.

+----------------+
| HELLO WORLD !! |
+----------------+
| HELLO WORLD !! |
+----------------+
1 row in set (0.06 sec)

+---------+
| HI !!!! |
+---------+
| HI !!!! |
+---------+
1 row in set (0.06 sec)
Query OK, 0 rows affected (0.08 sec)

정리

이처럼 CALL 명령문을 사용하면 하나의 저장 프로시저 안에서 원하는 만큼 다른 프로시저들을 호출할 수 있습니다. DELIMITER 설정에 주의하고, 각 프로시저의 실행 순서를 고려하여 설계하면 복잡한 비즈니스 로직도 깔끔하게 모듈화할 수 있습니다.