📌 DB한테도 함수를 쓰라고요? 프로시저로 말하는 개발자 되기
SQL을 배우다 보면 이런 생각이 들죠.
“매번 같은 쿼리를 치는 게 맞나?”
“조건만 살짝 다르고 구조는 똑같은데, 이걸 매번 복붙해?”
바로 그럴 때 필요한 게 MySQL의 프로시저(Stored Procedure) 입니다.
✅ 프로시저란?
프로시저는 쉽게 말해 SQL 코드 블록을 함수처럼 저장해두는 것입니다.
필요할 때마다 호출해서 실행할 수 있으니, 반복되는 작업을 자동화하는 데 아주 유용하죠.
🤔 왜 프로시저를 쓰나요?

✍️ 기본 문법
MySQL에서 프로시저는 이렇게 작성합니다:
CREATE PROCEDURE 프로시저이름 (매개변수)
BEGIN
실행할 SQL문;
END;
- CREATE PROCEDURE로 시작합니다.
- 괄호 안에는 입력 매개변수(IN), 필요에 따라 출력 매개변수(OUT) 도 사용할 수 있습니다.
- BEGIN ... END 사이에 여러 개의 SQL 문을 작성할 수 있어요.
- 호출할 땐 CALL 프로시저이름(인자값); 으로 실행합니다.
🛠️ 사용 예시
-- 부서 번호를 입력받아, 해당 부서 직원 이름만 조회하는 프로시저
CREATE PROCEDURE GetDeptEmployees(IN dept INT)
BEGIN
SELECT emp_name FROM employee
WHERE dept_id = dept;
END;
그리고 이렇게 실행하면 됩니다:
CALL GetDeptEmployees(1);
📌 IN dept INT는 무슨 의미인가요?
CREATE PROCEDURE GetDeptEmployees(IN dept INT)
이 문장은 다음과 같은 의미를 가집니다:

🧠 예를 들어 이해해보기
CALL GetDeptEmployees(2);
이렇게 호출하면
→ dept라는 매개변수에 숫자 2가 전달되고,
→ 프로시저 안의 쿼리는 WHERE dept_id = 2처럼 작동하게 되는 거죠!
💡 참고로...
MySQL 프로시저 매개변수에는 3가지 방향이 있어요:

🎯 요약
- IN dept INT는 "정수형 부서 번호를 외부에서 받아서 프로시저 안에서 사용할게요" 라는 뜻입니다.
- IN은 방향, INT는 자료형, dept는 변수 이름이에요!
🔄 프로시저 : 반복 작업에 강하다!
예를 들어 매일 특정 조건에 맞는 데이터를 백업하거나, 여러 조건을 바꿔가며 리포트를 추출해야 할 때, 프로시저 하나면 수작업 대신 자동 실행이 가능해요.
💡 마무리 팁
- 프로시저는 일종의 "DB 안에 저장된 함수" 라고 생각하세요.
- 복잡하거나 반복되는 SQL은 프로시저로 정리하면 코드도 깔끔, 실행도 빠름!
- 나중에 트리거(trigger), 이벤트(event scheduler) 와도 찰떡궁합입니다.
📝 마무리 한 줄
"쿼리를 외우지 말고, 저장해서 불러오세요."
오늘부터 DB한테도 함수를 쓰게 해주세요 😎
'국비지원 - 실버마케팅(코딩) 250206~' 카테고리의 다른 글
| “UNION? JOIN? 뭘 붙이냐에 따라 다릅니다 – SQL 쿼리 꿀팁 정리” (0) | 2025.05.16 |
|---|---|
| "SQL에서 FROM에 어떤 테이블을 넣어야 할까?" (2) | 2025.05.16 |
| 📌 SQL CASE WHEN ELSE 완벽 정리: 초보도 중수도 알아야 할 팁! (0) | 2025.05.16 |
| 🌐 SQL JOIN 완전 기초 정리 — 공식 언어가 영어인 나라 찾기 예제로 배우기 (3) | 2025.05.16 |
| [SQL 기초 완전 정복] FROM이 들어가는 구문 vs 안 들어가는 구문, 왜 다를까? (2) | 2025.05.15 |