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

MySQL 저장 프로시저에서 열 값 반환하기: OUT 매개변수 완벽 가이드

MySQL에서 저장 프로시저(Stored Procedure)는 OUT 매개변수를 활용하면 조회한 열 값을 외부 변수로 반환할 수 있습니다. 이 글에서는 테이블 생성부터 프로시저 작성, 호출, 결과 확인까지 전 과정을 단계별로 살펴보겠습니다.

1. 테이블 생성하기

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

mysql> create table DemoTable
    -> (
    -> Id int,
    -> Score int
    -> );
Query OK, 0 rows affected (0.69 sec)

2. 데이터 삽입하기

INSERT 명령어를 사용해 테이블에 샘플 데이터를 추가합니다.

mysql> insert into DemoTable values(1,858858686);
Query OK, 1 row affected (0.11 sec)

mysql> insert into DemoTable values(2,9900554);
Query OK, 1 row affected (0.22 sec)

mysql> insert into DemoTable values(3,646565667);
Query OK, 1 row affected (0.15 sec)

3. 전체 데이터 조회하기

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

mysql> select *from DemoTable;

출력 결과

+------+-----------+
| Id   | Score     |
+------+-----------+
| 1    | 858858686 |
| 2    | 9900554   |
| 3    | 646565667 |
+------+-----------+
3 rows in set (0.00 sec)

4. 저장 프로시저 생성하기

다음은 특정 Id에 해당하는 Score 값을 OUT 매개변수로 반환하는 MySQL 저장 프로시저입니다.

mysql> DELIMITER //
mysql> CREATE PROCEDURE Test_StoredProcedure(in id INT, OUT scoreValue INT)
-> BEGIN
-> SELECT Score
-> INTO scoreValue
-> FROM DemoTable tbl
-> WHERE tbl.Id = id;
-> END
-> //
Query OK, 0 rows affected (0.18 sec)
mysql> DELIMITER ;

핵심 포인트:

  • IN id INT : 프로시저로 전달되는 입력값입니다.
  • OUT scoreValue INT : 쿼리 결과를 담아 외부로 반환하는 출력 변수입니다.
  • SELECT ... INTO : 조회한 열 값을 변수에 대입하는 구문입니다.
  • DELIMITER // : 프로시저 내부의 세미콜론과 충돌하지 않도록 문장 종료 기호를 임시로 변경합니다.

5. 저장 프로시저 호출하기

CALL 명령어로 프로시저를 실행하고, 반환된 값을 @result라는 사용자 정의 변수에 저장합니다.

mysql> call Test_StoredProcedure(2,@result);
Query OK, 1 row affected (0.00 sec)

6. 반환된 값 확인하기

SELECT 문으로 변수에 저장된 값을 출력합니다.

mysql> select @result;

출력 결과

+---------+
| @result |
+---------+
| 9900554 |
+---------+
1 row in set (0.00 sec)

Id가 2인 행의 Score 값인 9900554가 정상적으로 반환된 것을 확인할 수 있습니다. 이처럼 OUT 매개변수를 사용하면 저장 프로시저 내부의 조회 결과나 계산 값을 애플리케이션 또는 다른 SQL 문에서 손쉽게 재사용할 수 있습니다.