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 문에서 손쉽게 재사용할 수 있습니다.