Procedure와 Function의 차이

Lys·2023년 9월 12일

개발상식

목록 보기
10/15

Procedure란?

DB에 관련 된 일련의 작업을 정리한 절차를 관계형 데이터베이스 관리 시스템에 저장한 것으로 일련의 쿼리를 하나의 함수처럼 실행하기 위한 쿼리의 집합이다.보통 단독으로 실행 되어야 할 작업을 위임 받았을 때 사용한다.

**Procedure 생성 구문**

CREATE PROCEDURE [프로시저명]([파라미터])
AS
BEGIN
 [쿼리문]
END
ex) - Reservation테이블에 프로시저 생성해서 예약자, 날짜 insert 하기

CREATE PROCEDURE 'PRO_Rsrvt' ( //프로시저 생성
PARAM_NAME VARCHAR(50) -- 파라미터를 선언함,(이름) 
PARAM_DATE VARCHAR(50) (날짜)
)
BEGIN
 
 INSERT INTO Reservation(NAME,DATE) VALUES(PARAM_NAME,PARAM_DATE);
 END
 
 CALL PRO_Rsrvt('홍길동','1225'); -- 프로시저명(파라미터) 실행
 
 SELECT NAME,DATE FROM Reservation -- 프로시저로 insert된 내용 조회
 
 
  • Procedure의 특징

    • 쿼리문을 하나의 메서드 형식으로 만들고 어떤 동작을 일괄적으로 처리하는 용도로 사용된다.
    • API처럼 여러 애플리케이션과 공유가 가능하다.
    • 리턴값이 여러개가 가능하다.
    • 리턴값이 있을 수도 없을 수도 있다.
  • Procedure의 장점

    • 하나의 요청으로 여러 sql을 실행할 수 있기 때문에 네트워크 과부화를 줄일 수 있다.
    • 서버에서 실행 되기 때문에 속도가 빠르다.
    • 특정 기능 변경 시 프로시저를 변경하면 되어서 기능 변경이 편리하다.
  • Procedure의 단점

    • 프로시저가 어디에 사용되는지 어렵기 때문에 유지보수가 어렵다.
    • 문자나 숫자 연산에 프로시저를 사용하면 java나 c보다 처리 성능이 느리다.
    • 재사용성이 좋지 않다.

      Function이란?

      하나의 목적 작업을 수행하기 위해 독립적으로 설계된 코드의 집합으로
      로직을 도와주는 역할을 하며 간단한 계산이나 수치등을 나타낼 때 사용하며 리턴값을 반드시 가져야 한다는 특징이 있다.

      ex) 프로시저에서 중복되는 로직이 발생하거나 자주 사용하는 로직을 모듈화하고 싶을 때 function으로 만들어 현재 업무를 서프트 해주는 목적으로 사용

      Procedure와 Function의 차이

      차이ProcedureFunction
      리턴값가질 수도 있고 안 가질 수도 있다.반드시 가져야 된다.
      리턴값여러개의 리턴값을 가질 수 있다.하나의 리턴값만 가져야 된다.
      매개변수입력,출력,입출력 형식으로 받을 수 있다.입력 형식으로만 받을 수 있다
      처리 장소클라이언트(화면)에서 값을 건네 받아 서버에서 작업(속도가 빠르다)클라이언트에서 값을 전달 받고 서버에서 필요한 값을 가져와서 클라이언트에서 작업 후 반환(속도가 느림)
 🙇‍ 참고 사이트 🙇‍
https://velog.io/@piczo/ORACLE-%ED%95%A8%EC%88%98%EC%99%80-%ED%94%84%EB%A1%9C%EC%8B%9C%EC%A0%80%EC%9D%98-%EC%B0%A8%EC%9D%B4
https://seohee-ha.tistory.com/125
https://wakestand.tistory.com/518

0개의 댓글