Procedure(프로시저) vs 함수의 차이 - Oracle

IRISH·2023년 11월 4일
0

IT지식

목록 보기
9/12
post-thumbnail

프로시저(Procedure)란?

  • 프로시저 = 어떤 프로세스를 절차적으로 기술해 놓은 것
  • 상세
    • DB 에 대한 일련의 작업을 정리한 절차를 관계형 데이터베이스 관리 시스템에 저장한 것
    • 쿼리문을 하나의 메서드 형식으로 만들고 어떤 동작을 일괄적으로 처리하는 용도로 쓰임
    • 하나의 요청으로 여러 SQL문을 실행시킬 수 있기때문에 네트워크 부하를 줄일 수 있음
    • API처럼 여러 애플리케이션과 공유가 가능
    • 특정한 기능을 변경 시 프로시저만 변경하면 되기에 기능 변경이 편리
    • 프로시저가 앱의 어디에 사용되는 지 확인이 어렵기에 유지보수가 어려움
    • 문자나 숫자 연산에 프로시저를 사용하면 오히려 C나 JAVA보다 처리 성능이 느림

⇒ 프로시저 예시

[ 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)의 차이점

요약

  • 프로시저 = 어떤 프로세스를 절차적으로 기술해 놓은 것
  • 함수 = 프로시저의 각 프로세스를 수행하기 위해 필요한 기능

느낀점

  • 요즘 회사에 입사하자마자 프론트 엔드 + DB(SQL) 작업 위주로 업무를 진행하고 있다.
    • 백엔드는 다른 회사의 프레임워크 기반으로 움직여서 프론트랑 DB 위주로 작업함 ㅎ
  • 아무튼 DB 작업을 하다보니 SQL을 자주 다루게 되는데, Java와 같이 어떤 함수를 작성해서 사용할 수는 없을까 고민하게 됐다.
  • 그 결과, DB에도 그런 역할을 하는 것이 있고, 크게 프로시저와 함수가 있단 것을 알게 됐다.
  • 각 화면마다 특정한 목적이 있는데, 그 목적에 맞게 DB 역시 프로시저를 작성하고, 그 프로시저를 실행하기 위한 함수를 설계 및 작업 수행이 수반된다면 더 좋은 업무를 할 수 있을 거라 생각이 든다.

참고

profile
#Software Engineer #IRISH

0개의 댓글