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

MySQL 저장 프로시저에서 OUT 매개변수와 SELECT INTO로 데이터 읽는 방법

MySQL 프로시저에서 OUT 매개변수 사용하기

MySQL 저장 프로시저(Stored Procedure)에서 테이블의 데이터를 조회한 결과를 외부 변수로 전달하려면 SELECT ... INTO 구문을 사용하면 됩니다. 이 방식을 활용하면 쿼리 결과를 OUT 매개변수에 직접 저장할 수 있습니다.

아래 예제를 통해 단계별로 살펴보겠습니다.

1단계: 테이블 생성

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table DemoTable1860
    (
    Amount int
    );
Query OK, 0 rows affected (0.00 sec)

2단계: 데이터 삽입

INSERT 명령어를 사용해 테이블에 레코드를 추가합니다.

mysql> insert into DemoTable1860 values(1590);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1860 values(410);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1860 values(3000);
Query OK, 1 row affected (0.00 sec)

3단계: 전체 데이터 확인

SELECT 문으로 테이블에 저장된 모든 레코드를 조회합니다.

mysql> select * from DemoTable1860;

위 쿼리는 다음과 같은 결과를 출력합니다.

+--------+
| Amount |
+--------+
|   1590 |
|    410 |
|   3000 |
+--------+
3 rows in set (0.00 sec)

4단계: OUT 매개변수가 있는 저장 프로시저 생성

이제 OUT 매개변수를 사용하는 저장 프로시저를 생성합니다. 프로시저 내부에서 SUM 함수로 Amount 컬럼의 합계를 구하고, 그 결과를 SELECT INTO 구문으로 OUT 매개변수에 저장합니다.

mysql> delimiter //
mysql> create procedure use_of_out_parameter(out TotalAmount int)
    begin
    select sum(Amount) into TotalAmount from DemoTable1860;
    end
    //
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;

참고: delimiter //는 프로시저 본문 내부의 세미콜론(;)이 MySQL 클라이언트에서 문장 종료로 해석되지 않도록 구분자를 임시로 변경하는 명령입니다. 프로시저 생성이 완료된 후에는 반드시 delimiter ;로 원래대로 되돌려야 합니다.

5단계: 저장 프로시저 호출

CALL 명령어로 저장 프로시저를 실행하고, 결과를 받을 사용자 정의 변수(@TotalAmount)를 인자로 전달합니다.

mysql> call use_of_out_parameter(@TotalAmount);
Query OK, 1 row affected (0.00 sec)

6단계: OUT 매개변수 값 확인

프로시저 호출이 완료되면 변수에 저장된 값을 SELECT 문으로 확인할 수 있습니다.

mysql> select @TotalAmount;

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

+--------------+
| @TotalAmount |
+--------------+
|        5000 |
+--------------+
1 row in set (0.00 sec)

정리

이처럼 MySQL에서는 SELECT ... INTO 구문과 OUT 매개변수를 조합하면, 저장 프로시저 내부에서 계산된 집계 값(예: 합계, 평균, 개수 등)을 프로시저 외부의 변수로 손쉽게 전달할 수 있습니다. 이는 애플리케이션에서 복잡한 연산 로직을 데이터베이스 쪽으로 위임할 때 매우 유용하게 활용됩니다.