이미지09
Coding Story/DATABASE

[ Oracle ] 프로시저와 함수의 차이

반응형

 

 

오라클을 사용하다보면 자주 접하게 되는 프로시저함수.

이 둘의 정의와 차이점에 대해 알아보자.

 

 

 

 

프로시저(Procedure)란?

넓은 의미로는 어떤 업무를 수행하기 위한 절차를 뜻한다.

예를 들어 쇼핑몰에서 신발을 구매하는 프로시저로 표현해본다면

[ Procedure Start ]

① 쇼핑몰 회원 로그인

② 구매할 신발 선택

③ 개인정보 및 배송지 선택

④ 결제

[ Procedure End ]

 

위 처럼 어떤 프로세스를 절차적으로 기술해 놓은 것을 프로시저라 한다.

 

 

프로시저 문법

CREATE OR REPLACE PROCEDURE 프로시저 이름
     ( 매개변수명1 [ IN || OUT || INOUT ] 데이터타입,
       매개변수명2 [ IN || OUT || INOUT ] 데이터타입 ... )
IS||AS
       변수, 상수 등 선언 ( 선언부 )
BEGIN
       실행 문장 ( 실행부 )
       EXCEPTION 문장   //필수아님
END ;

 

 

프로시저 예제

//사번을 입력받아 급여를 인상하는 update_sal 프로시저
CREATE OR REPLACE PROCEDURE update_sal
     ( v_empno IN NUMBER )
IS
BEGIN
       UPDATE emp
       SET sal = sal * 1.1
       WHERE empno = v_empno;
END update_sal;

 

 

 

 

 

함수(Function)란?

위의 프로시저의 각 프로세스를 수행하기 위해 필요한 기능들을 함수라 한다.

예를 들어 쇼핑몰의 로그인기능 중 ID와 PW를 체크하는 기능등을 함수라 보면 된다.

간혹 "함수는 리턴값을 갖는 프로시저이며 프로시저는 리턴값이 없다"라고 생각하시는 분들이 있는데 이는 명백히 틀린 정의이다.

이유는 함수나 프로시저나 구조적으로는 동일하며 프로시저도 리턴값을 가질수 있기 때문이다.

 

함수 문법

CREATE OR REPLACE FUNCTION 함수 이름
     ( 매개변수명1 매개변수1타입,
       매개변수명2 매개변수2타입 ... )
RETURN 데이터타입
IS||AS
       변수, 상수 등 선언 ( 선언부 )
BEGIN
       실행 문장 ( 실행부 )
       RETURN 반환값    //필수
       EXCEPTION 문장   //필수아님
END ;

 

 

함수 예제

//날짜를 입력하면 YYYY-MM-DD 형태로 바꿔주는 함수
CREATE OR REPLACE FUNCTION testDate ( date Date )
RETURN VARCHAR2
IS
       changeDate VARCHAR2 ( 20 ) ;
BEGIN 
       changeDate := NULL ;
       changeDate := TO_CHAR ( date, 'YYYY-MM-DD' ) ;
       RETURN changeDate ;
END ;

 

 

 

 

그렇다면 프로시저와 함수는 무슨 차이가 있는가?

프로시저(Procedure)와 함수(Function)의 차이

 

 

 

 

반응형