Oracle 함수와 프로시저의 차이

syeony·2026년 3월 10일

oracle

목록 보기
2/3

오라클 데이터베이스에서 함수(Function)프로시저(Procedure)는 둘 다 특정 로직을 저장해두고 필요할 때 호출하는 객체(PL/SQL)라는 공통점이 있습니다. 하지만 "왜 호출하는가?"와 "어떻게 값을 돌려받는가?"라는 목적에서 뚜렷한 차이가 납니다.

쉽게 비유하자면, 함수는 자판기(동전을 넣으면 결과가 나옴) 같고, 프로시저는 서비스 센터의 작업 지시서(특정 작업을 수행함) 같습니다.


주요 차이점 요약

구분함수 (Function)프로시저 (Procedure)
반환값 (Return)반드시 하나의 값을 반환함반환값이 없을 수도 있고, 여러 개일 수도 있음 (OUT 파라미터 사용)
목적계산을 통한 값의 도출특정 비즈니스 로직 수행 (데이터 조작 등)
SQL문 사용SELECT, WHERE 절 등에 직접 사용 가능SQL문 내에서 직접 호출 불가 (EXECUTE 등으로 실행)
DML 사용제한적 (주로 조회용으로 사용 권장)INSERT, UPDATE, DELETE 등 자유롭게 사용 가능

1. 함수 (Function)

함수는 반드시 하나의 결과값을 돌려줘야 합니다. 우리가 수학에서 f(x)=yf(x) = y라고 하듯이, 입력값을 넣으면 계산된 결과값 하나가 튀어나오는 구조입니다.

  • 특징: RETURN 예약어가 필수입니다.
  • 활용 예시:
-- SQL 문 안에서 바로 사용 가능
SELECT EMP_NAME, GET_ANNUAL_SALARY(SALARY) FROM EMPLOYEES;

2. 프로시저 (Procedure)

프로시저는 특정 동작을 '실행'하는 데 초점이 맞춰져 있습니다. 값을 반환하기보다는 "데이터를 백업해라", "신규 회원을 등록해라" 같은 일련의 프로세스를 처리할 때 사용합니다.

  • 특징: RETURN 문이 필수는 아닙니다. 대신 OUT 파라미터를 통해 여러 값을 전달할 수 있습니다.
  • 활용 예시:
-- 별도의 실행 명령어가 필요함
EXECUTE UPDATE_STOCK_QUANTITY(item_id => 101, qty => 5);

[핵심 팁]
단순한 계산이나 데이터 변환이 필요하다면 함수를, 데이터베이스의 상태를 변경하거나 복잡한 로직을 단계별로 실행해야 한다면 프로시저를 선택하는 것이 정석입니다.

profile
cross platform과 aOS, iOS에 관심이 많은 모바일 개발자 지망생 오승연입니다

0개의 댓글