매개변수(파라미터)는 저장 프로시저를 더욱 유용하고 유연하게 만들어 주는 핵심 요소입니다. MySQL에서는 목적에 따라 다음과 같은 세 가지 매개변수 모드를 제공합니다.
1. IN 모드
IN은 기본값(default)으로 적용되는 모드입니다. 저장 프로시저에서 IN 매개변수를 정의하면, 호출 프로그램은 반드시 해당 프로시저에 인자(argument)를 전달해야 합니다. IN 매개변수의 값은 보호되는데, 이는 프로시저 내부에서 값이 변경되더라도 프로시저가 종료된 후에는 원래 값이 그대로 유지된다는 의미입니다.
2. OUT 모드
OUT 매개변수의 값은 저장 프로시저 내부에서 자유롭게 변경할 수 있으며, 변경된 새로운 값이 호출 프로그램으로 되돌려 전달됩니다. 단, 저장 프로시저가 시작되는 시점에는 OUT 매개변수의 초기값에 접근할 수 없다는 점에 유의해야 합니다.
3. INOUT 모드
INOUT 매개변수는 IN과 OUT의 기능을 하나로 결합한 형태입니다. 즉, 호출 프로그램이 인자를 전달할 수 있을 뿐만 아니라, 저장 프로시저는 전달받은 값을 수정한 뒤 새로운 값을 호출 프로그램에 다시 반환할 수 있습니다.
매개변수 정의 문법
저장 프로시저에서 매개변수를 정의하는 기본 문법은 다음과 같습니다.
MODE parameter_name parameter_type(parameter_size)
여기서 MODE는 매개변수의 용도에 따라 IN, OUT 또는 INOUT 중 하나를 지정하게 됩니다.
- parameter_name: 매개변수의 이름
- parameter_type: 매개변수의 데이터 타입
- parameter_size: 매개변수의 크기
실전 예제
아래 예제는 IN 모드로 부서 ID를 전달받고, OUT 모드로 해당 부서의 직원 수를 반환하는 저장 프로시저입니다.
DELIMITER //
CREATE PROCEDURE get_employee_count(
IN dept_id INT,
OUT total INT
)
BEGIN
SELECT COUNT(*) INTO total
FROM employees
WHERE department_id = dept_id;
END //
DELIMITER ;
-- 프로시저 호출
CALL get_employee_count(10, @total);
SELECT @total AS 직원수;
이처럼 각 모드의 특성을 이해하고 상황에 맞게 활용하면, 데이터 입출력 흐름을 명확하게 제어할 수 있는 효율적인 저장 프로시저를 작성할 수 있습니다.