본문 바로가기
Database

SQL 프로시저 (SQL procedure)

by SuldenLion 2025. 5. 14.
반응형

 

ㅇ 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 종류마다 문법 차이 있음

반응형

댓글