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);
실행 과정:
- '테스트값' 이라는 문자열을 IN 파라미터로 전달 → testTBL에 삽입됨
- 삽입된 행의 id 값을 OUT 파라미터에 저장
- 호출자는 @myValue를 통해 반환된 값을 확인
실행 결과 예시
현재 입력된 ID 값 ==> 1
정리
- IN: 외부 → 프로시저로 값을 전달
- OUT: 프로시저 → 외부로 값을 반환
- 둘을 조합하면 입력값을 처리하고 결과를 돌려주는 구조를 만들 수 있음
'컴퓨터 과학 > 데이터 베이스' 카테고리의 다른 글
| MySQL에서 커서(Cursor) 사용 순서 (0) | 2025.08.30 |
|---|---|
| MySQL PREPARE 구문과 SET 변수 (0) | 2025.08.30 |
| MySQL 제약조건(Constraints) 정리 (2) | 2025.08.28 |
| MySQL 조건문: 흐름 제어 vs 단순 표현식 (2) | 2025.08.28 |
| MySQL에서 조건문 사용하기: IF vs CASE (0) | 2025.08.28 |