본문 바로가기

CS STUDY/데이터베이스

저장 프로시저(Stored Procedure)

저장 프로시저

개념
  • 일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리문들의 집합
  • 저장 프로시저와 함수의 차이
    • 저장 프로시저: 리턴값이 없거나 많을 수도 있고 서버에서 실행되므로 속도 빠름
    • 함수: 리턴값이 필수이고 클라이언트에서 실행되므로 프로시저보다 느림
작동 방식 

 

프로시저를 만들어두면, 여러 상황에 따라 해당 쿼리문이 필요할 때 인자 값만 전달하여 쉽게 원하는 결과물 획득 가능

해당 DB에 접근 가능한 여러 애플리케이션들과 공유하여 사용 가능 

 

생성 및 호출 
CREATE OR REPLACE PROCEDURE 프로시저명(변수명1 IN 데이터타입, 변수명2 OUT 데이터타입) -- 인자 값은 필수 아님
IS
[
변수명1 데이터타입;
변수명2 데이터타입;
..
]
BEGIN
 필요한 기능; -- 인자값 활용 가능
END;

EXEC 프로시저명; -- 호출

 

장점
  • 클라이언트가 직접 SQL을 작성하지 않고, 프로시저에 매개변수만 담아 전달하면 SQL이 이미 서버에 저장되어 있으므로 클라이언트-서버 네트워크 트래픽 감소 
  • API처럼 여러 애플리케이션들과 공유 가능
  • 여러 SQL 명령문을 하나의 프로시저로 묶어 처리할 수 있어 코드의 재사용성 향상 및 개발 시간 단축 
  • DB에 직접 접근하지 않아 보안성 높음
단점 
  • 문자 or 숫자 연산에서 C나 Java보다 성능이 느리다.
  • 에러가 발생했을 때 어디서 문제인지 디버깅하는 것이 어렵다.

 

 

Q. 함수와 프로시저의 차이

A. 함수는 값을 반환하고 프로시저는 반환x

 

Q. 저장 프로시저의 장점

반복되는 SQL 명령문을 한 번 작성 후 재사용 가능 => 개발 시간 단축

 

Q. 저장 프로시저 내에서 저장 프로시저를 호출할 수 있습니까?

네. '중첩된 저장 프로시저'라고 하는데 각 DBMS의 규칙에 따라 호출 깊이나 방식에 제한이 있을 수 있으므로 주의해야 한다.

 

 

https://github.com/gyoogle/tech-interview-for-developer/blob/master/Computer%20Science/Database/%EC%A0%80%EC%9E%A5%20%ED%94%84%EB%A1%9C%EC%8B%9C%EC%A0%80(Stored%20PROCEDURE).md

 

'CS STUDY > 데이터베이스' 카테고리의 다른 글

Redis  (0) 2024.03.01
SQL JOIN  (0) 2024.02.15
키(Key)의 개념 및 종류  (0) 2024.02.15