ㅇ SQL 프로시저 정의
- 데이터베이스에 저장된 일련의 SQL 문들을 모아놓은 것.
- 일종의 함수(Function) 혹은 루틴(Routine)이라고 할 수 있음.
- 사용자가 정의한 명령문 블록으로, 트랜잭션 제어, 조건문, 반복문 등을 포함할 수 있음.
- 저장 프로시저(Stored procedure)라고도 함.
- "SQL + 프로그래밍 기능"으로 일반 프로그래밍 언어와 비슷한 효과를 낼 수 있음.
ㅇ 프로시저 사용 이유
- 반복적인 작업이나 복잡한 서버 로직을 서버에서 효율적으로 처리하기 위해 사용됨
- 재사용성, 유지보수 용이함
- 클라이언트와 서버 간 트래픽 감소 (성능 향상)
- 사용 권한을 세밀하게 제어 가능 (보안성)
ㅇ 프로시저 사용 예
- 반복적인 데이터 처리
- 배치 작업 자동화
- 트랜잭션 제어
- 복잡한 조건 로직 처리
ㅇ 프로시저 사용법 (MySQL 기준)
DELIMITER $$
CREATE PROCEDURE STORED_PROCEDURE_NAME(IN이나 OUT 매개변수)
BEGIN
-- SQL
-- PROGRAMMING
-- CODES
END $$
DELIMITER ;
DELIMITER $$로 시작해서
DELIMITER ;으로 종료
- $$는 1개만 사용해도 되지만 명확한 표시를 위해 일반적으로 2개 사용
- 꼭 $$가 아닌 ##, %%, &&, // 등으로 바꿔도 된다고 함
프로시저 실행은 CALL 문법 사용
CALL STORED_PROCEDURE_NAME(매개변수값)
- 실행 위치는 주로 백엔드 서버, 백엔드 작업 스케줄러, 배치 프로그램 정도
> DB 트리거 내부나 프론트엔드는 디버깅, 유지보수, 보안 문제로 안쓰는 듯함
ㅇ 프로시저 사용시 유의할 점
- 프로시저가 너무 복잡해지면 디버깅이 어려움
- 비즈니스 로직을 DB에 넣는 것에 대한 팀 내 합의 필요
- DB 종류마다 문법 차이 있음
'Database' 카테고리의 다른 글
SQL Recursive CTE (재귀 쿼리) (0) | 2025.05.30 |
---|---|
CTE (Common Table Expression) 정리 (0) | 2025.05.09 |
ROLLUP, GROUPING SETS, CUBE 간단 정리 (SQL 그룹함수) (0) | 2024.03.09 |
DB 정리 - 데이터 모델과 성능 (1) | 2023.10.31 |
DB 관련 정리 - 데이터 모델링 (2) | 2023.10.04 |
댓글