개요
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