Database

[MySQL] Stored Procedure - 매개변수

비번변경 2025. 3. 19. 14:46

개요

2025.02.26-[Database] Stored Procedure - 정의/호출에서 프로시저의 매개변수를 정의하는 부분을 간단하게 살펴봤었다. 이번 글에서는 매개변수를 정의하고 실제로 사용하는 예시를 정리해두려고 한다.

 

 

IN

IN 유형의 매개변수는 프로시저를 호출할 때 전달하는 입력 매개변수이다. 프로시저 내에서 사용할 때는 변수명만 기재하면 된다.

CREATE PROCEDURE test_procedure(
    IN value VARCHAR(20)
)
BEGIN
    SELECT value;
END

-- 호출
CALL test_procedure('test');

 

 

OUT

OUT 유형 매개변수는 프로시저가 호출자에게 값을 반환하는 매개변수이다. 프로시저 내에서 NULL로 초기화된다.

CREATE PROCEDURE test_procedure(
    IN value VARCHAR(20),
    OUT result VARCHAR(20)
)
BEGIN
    SET result = value;
END

-- 호출
CALL test_procedure('test', @result);
SELECT @result;

OUT 매개변수를 사용하여 프로시저의 반환값을 받을 때는 세션 변수 등에 받아서 사용하면 된다.

 

 

INOUT

INOUT 매개변수는 프로시저에 전달한 변수의 값을 프로시저가 수정하여 새 값을 호출자에게 반환하는 방식으로 동작하는 매개변수이다.

CREATE PROCEDURE test_procedure(
    IN value VARCHAR(20),
    INOUT result VARCHAR(20)
)
BEGIN
    SET result = CONCAT(value, result);
END

-- 호출
SET @result = 'world!';
CALL test_procedure('Hello, ', @result);
SELECT @result;

호출할 때마다 값을 일정하게 증가시키는 counter 등을 구현할 때 사용할 수 있다.

 

 

참고 문서

https://dev.mysql.com/doc/refman/8.4/en/create-procedure.html

https://www.mysqltutorial.org/mysql-stored-procedure/stored-procedures-parameters-in-mysql/

 

728x90