📌 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한테도 함수를 쓰게 해주세요 😎

+ Recent posts