컴퓨터 과학/데이터 베이스

MySQL 프로시저에서 IN과 OUT 이해하기

Data Jun 2025. 8. 30. 10:04

MySQL에서 프로시저(Stored Procedure) 는 반복적으로 사용하는 SQL 로직을 하나로 묶어 재사용할 수 있는 기능입니다.
특히 IN, OUT 파라미터를 사용하면 값을 전달받거나 반환할 수 있어 더 유연한 로직 구성이 가능합니다.

 

IN 파라미터란?

  • 호출 시 외부에서 값을 입력받는 용도입니다.
  • 프로시저 내부에서 해당 값을 읽을 수 있지만, 수정해도 호출자에게는 반영되지 않습니다.
  • 즉, 단방향 입력 전용 변수라고 이해하면 됩니다.

예:

IN txtValue CHAR(10)

→ 프로시저 실행 시 문자열을 전달받아 INSERT 문에 사용.

 

OUT 파라미터란?

  • 프로시저 실행 결과를 호출자에게 반환하는 용도입니다.
  • 프로시저 내부에서 값을 채워 넣으면, 호출한 쪽에서 그 값을 확인할 수 있습니다.
  • 즉, 프로시저가 결과를 돌려주는 변수라고 할 수 있습니다.

예:

OUT outValue INT

→ 프로시저 내부에서 SELECT MAX(id) 값을 담아 호출자에게 전달.

 

예제 코드 해설

CREATE PROCEDURE userProc3(
    IN txtValue CHAR(10),   -- 입력값
    OUT outValue INT        -- 출력값
)
BEGIN
	INSERT INTO testTBL VALUES (NULL, txtValue);   -- IN 값 삽입
	SELECT MAX(id) INTO outValue FROM testTBL;     -- OUT 값 반환
END;


CALL userProc3('테스트값', @myValue);
SELECT CONCAT('현재 입력된 ID 값 ==>', @myValue);

실행 과정:

  1. '테스트값' 이라는 문자열을 IN 파라미터로 전달 → testTBL에 삽입됨
  2. 삽입된 행의 id 값을 OUT 파라미터에 저장
  3. 호출자는 @myValue를 통해 반환된 값을 확인

실행 결과 예시

현재 입력된 ID 값 ==> 1

 

정리

  • IN: 외부 → 프로시저로 값을 전달
  • OUT: 프로시저 → 외부로 값을 반환
  • 둘을 조합하면 입력값을 처리하고 결과를 돌려주는 구조를 만들 수 있음