[데이터베이스] 프로시저 vs 함수(Function)

김진만·2023년 1월 25일
0

CS

목록 보기
3/3

1.프로시저(Procedure)란?

데이터베이스에 대한 일련의 작업을 정리한 절차를 관계형 데이터베이스 관리 시스템에 저장한 것으로 영구저장모듈(Persistent Storage Module)이라고도 불립니다.
보통 저장 프로시저를 프로시저라고 부르며, 일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합입니다.
즉, 특정 작업을 위한 쿼리들의 블록입니다.

장점

하나의 요청으로 여러 SQL문을 실행시킬 수 있습니다. (네트워크 부하를 줄일 수 있음)
네트워크 소요 시간을 줄여 성능을 개선할 수 있습니다.
여러 어플리케이션과 공유가 가능합니다. (API처럼 제공가능)
기능 변경이 편합니다. (특정 기능을 변경할 때 프로시저만 변경하면 됨)

단점

문자나 숫자열 연산에 사용하면 오히려 C,Java보다 느린 성능을 보일 수 있습니다.
유지보수가 어렵습니다.(프로시져가 앱의 어디에 사용되는지 확인이 어려움)

2.함수(Function)란?

데이터베이스에서 함수는 일반적인 프로그래밍에서의 함수와 동일합니다.
매개변수를 받아 특정 계산(작업)을 수행하고 결과를 반환하는 구조로 되어 있습니다.
즉, 특정 동작을 수행하는 코드 부분을 의미합니다.
데이터베이스 내에서는 특정 값(매개변수)을 입력 받아 여러 쿼리문을 작업한 뒤 반환하는 기능을 의미합니다.

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

의미

프로시저

일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합이며, 일련의 작업을 정리한 절차입니다.
보통 단독으로 실행해야 할 작업을 위임받았을 때 사용합니다.

함수

하나의 특별한 목적의 작업을 수행하기 위해 독립적으로 설계된 코드의 집합입니다.
즉, 함수가 여러 작업을 위한 기능이라면 프로시저는 작업을 정리한 절차입니다.
보통 로직을 도와주는 역할이며, 간단한 계산, 수치 등을 나타낼 때 사용합니다.

프로시저 vs 함수

함수프로시저
파라미터입력형식으로만 받을 수 있음입력,출력,입출력 형식으로 받을 수 있음
반환값반드시 가져야함가질 수도 가지지 않을 수도 있음
쿼리 내에서 실행 가능SELECT,WHERE 문 등에서 사용이 가능합니다.SELECT,WHERE 문 등에서 사용 불가합니다.
처리 장소클라이언트(화면)에서 값을 건네 받고 서버에서 필요한 값을 가져와서 클라이언트에서 작업을 하고 반환합니다.즉, 클라이언트(화면)에서 실행이 되어 프로시저보단 속도가 느립니다.클라이언트(화면)에서 값을 건네받아 서버에서 작업을 한 뒤 클라이언트에게 전달합니다. 즉, 서버에서 실행이 되어 속도면에서 빠른 성능을 보여줍니다.

생성

함수

CREATE OR REPLACE FUNCTION SUM_TWICE(n1 NUMBER, n2 NUMBER)
RETURN NUMBER
IS
	twice_sum  NUMBER := 0;
BEGIN
	twice_sum := (n1 + n2)*2;
	RETURN twice_sum;
END;

프로시저

CREATE OR REPLACE PROCEDURE GET_TIER(in_name IN VARCHAR2,out_tier OUT VARCHAR2)
IS
BEGIN
    SELECT TIER INTO out_tier FROM SUMMONER_TB WHERE NAME = in_name;
EXCEPTION
  --소환사를 찾을 수 없을 때
  WEHN NO_DATA_FOUND THEN
    out_tier:='NO_SUMMONER_FOUND';
END GET_TIER;
profile
충분한 전기와 컴퓨터 한 대와 내 이 몸만 남아 있다면 지구를 재건할 수 있습니다.

0개의 댓글