728x90
[SQL] 프로시저에서의 매개 변수(IN, OUT, IN OUT)
SQL 프로시저를 작성할 때, 매개변수는 프로시저의 입력과 출력을 정의하는 중요한 요소가 된다.
매개변수는 크게 `IN`, `OUT`, `IN OUT` 세 가지 모드로 나뉘며, 각각의 모드는 서로 다른 목적과 사용방식을 가지고 있다.
IN
`IN`은 프로시저에 입력 값을 전달하는 데 사용된다.
프로시저가 호출될 때 외부에서 값을 받아들이며, 프로시저 내에서는 이 값을 읽기만 할 수 있습니다.
- 읽기 전용 : 프로시저 내부에서 값을 변경할 수 없다.
- 값 전달 필수 : 프로시저 호출 시 반드시 값을 전달해야 한다.
DELIMITER //
CREATE PROCEDURE GetEmployeeName(IN EmployeeID INT)
BEGIN
SELECT Name FROM Employees WHERE ID = EmployeeID;
END //
DELIMITER ;
OUT
`OUT` 매개변수는 프로시저 실행 수 결과값을 반환하는 데 사용된다.
해당 매개변수는 프로시저 내부에서 값을 설정하고, 호출한 쪽에서 그 값을 받을 수 있다.
- 쓰기 전용 : 프로시저 내부에서 값을 설정할 수 있지만, 호출 시 초기값을 제공할 필요는 없다.
- 초기값 필요 없음 : 프로시저 호출 시 값이 없어도 된다.
DELIMITER //
CREATE PROCEDURE GetDepartmentID(OUT DepartmentID INT, IN EmployeeID INT)
BEGIN
SELECT DepartmentID INTO DepartmentID FROM Employees WHERE ID = EmployeeID;
END //
DELIMITER ;
IN OUT
`IN OUT` 매개변수는 프로시저 호출 시 외부에서 값을 입력 받고, 프로시저 실행 후 수정된 값을 외부로 반환하는 용도로 사용된다.
- 읽기 및 쓰기 : 프로시저 내부에서 값을 읽고 수정할 수 있다.
- 초기값 필요 : 호출할 때 초기값을 제공해야 하며, 수정된 값이 외부로 반환된다.
DELIMITER //
CREATE PROCEDURE UpdateEmployeeSalary(IN OUT EmployeeID INT, IN SalaryIncrease DECIMAL(10,2))
BEGIN
UPDATE Employees SET Salary = Salary + SalaryIncrease WHERE ID = EmployeeID;
END //
DELIMITER ;
반응형
'💾 Data > SQL' 카테고리의 다른 글
[MySQL] 문자열 다루기 (0) | 2025.01.17 |
---|---|
[MySQL] Prepared Statement (0) | 2025.01.07 |
[MySQL] 프로시저 변수(DECLARE, SET)에 대한 이해 (0) | 2024.12.10 |
[MySQL] 실행중인 쿼리 확인하기 (0) | 2024.12.02 |
[MySQL] JSON_TABLE(), JSON_ARRAY() (2) | 2024.09.23 |