본문 바로가기
CODE/CodeKnowledge

[DB]프로시저 vs 함수

by 솔리닉__ 2023. 7. 2.
반응형

현업에서 DB에서 프로시저와 함수를 쓰는 경우를 볼 수 있습니다. 저는 그 차이를 명확하게 알고 있지 않습니다. 

그래서 이번에 정리를 해봤습니다. 

 

프로시저(Procedure)와 함수(Function)은 데이터베이스에서 저장된 코드의 실행을 위해 사용되는 두 가지 주요한 개체입니다. 다음은 프로시저와 함수의 차이점과 문법적인 차이를 설명해 드리겠습니다

 

함수 

CREATE OR REPLACE FUNCTION function_name (parameter1 datatype, parameter2 datatype, ...)
RETURN return_datatype
IS
    -- 변수 선언
    variable1 datatype;
    variable2 datatype;
    ...
BEGIN
    -- 함수의 실행 로직
    RETURN return_value;
END;
/

-- 함수 호출
SELECT function_name(parameter1_value, parameter2_value, ...) FROM dual;

프로시저

CREATE OR REPLACE PROCEDURE procedure_name (parameter1 datatype, parameter2 datatype, ...)
IS
BEGIN
    -- 프로시저의 실행 로직
END;
/

-- 프로시저 호출
CALL procedure_name(parameter1_value, parameter2_value, ...);

차이점

반환 값의 존재 여부: 프로시저는 일반적으로 값을 반환하지 않거나 반환값을 사용하지 않습니다. 반면에 함수는 항상 값을 반환합니다.

사용 목적

 프로시저는 주로 데이터베이스의 작업을 수행하고 결과를 변경하거나 처리하기 위해 사용됩니다. 반면에 함수는 값을 계산하고 반환하기 위해 사용됩니다.

호출 방식

프로시저는 CALL 문을 사용하여 호출됩니다. 함수는 일반적으로 SELECT 문이나 다른 표현식 내에서 호출됩니다.

문법적인 차이

프로시저와 함수의 문법적인 차이는 주로 반환 값과 호출 방식에 대한 차이가 있습니다. 다음은 오라클을 기준으로 프로시저와 함수의 문법적인 차이를 보여주는 예시입니다

 

함수 문법 

프로시저의 경우 CREATE OR REPLACE PROCEDURE 문을 사용하여 프로시저를 정의하고, 호출할 때는 CALL 문을 사용합니다. 반환 값을 가지지 않으므로 호출 결과를 직접 사용하지는 않습니다.

함수의 경우 CREATE OR REPLACE FUNCTION 문을 사용하여 함수를 정의하고, 호출할 때는 일반적으로 SELECT 문이나 다른 표현식 내에서 호출합니다. 반환 값을 가지기 때문에 호출 결과를 사용할 수 있습니다.

프로시저와 함수의 문법적인 차이점은 데이터베이스 시스템에 따라 다를 수 있으며, 위의 예시는 일반적인 오라클 문법을 보여주는 것입니다. 실제 사용하는 데이터베이스의 문서와 튜토리얼은 더 자세한 문법 설명과 예시를 제공할 것입니다.

반응형

댓글