대덕인재/Oracle

[Oracle D-19] 함수(Function)

꼬마버거 2025. 4. 25. 11:50

🍼 함수(Function)이 뭐야?

👉 "계산해서 결과 하나되돌려주는 도구!"


🍭 진짜 쉬운 예: 사탕 자판기

자판기에 숫자를 누르면
👉 "사탕 하나"가 나오는 것처럼,
Oracle 함수도 뭔가 입력하면
👉 "결과 하나"를 딱! 주는 거야.


📦 예를 들어 볼게!

▶ 이런 함수 만들 수 있어:

"사람의 생일을 입력하면 → 나이를 계산해서 알려주는 함수"


🧪 예제: 나이 계산 함수

CREATE OR REPLACE FUNCTION get_age (
    birthdate IN DATE
) RETURN NUMBER
IS
    age NUMBER;
BEGIN
    age := TRUNC(MONTHS_BETWEEN(SYSDATE, birthdate) / 12);
    RETURN age;
END;
 

✅ 사용 방법 (SELECT문에서 사용 가능!)

SELECT get_age(TO_DATE('2000-01-01', 'YYYY-MM-DD')) AS 나이 FROM DUAL;

🧠 결과:

나이
---
24

 


🎁 함수는 꼭! 값을 "RETURN"으로 되돌려줘야 해

  • 프로시저는 "작업만" 하고 끝나는 반면,
  • 함수는 반드시 무언가 계산해서 하나의 값을 반환해!

 


📊 함수(Function) vs 프로시저(Procedure) 차이점

 

구분 함수 (Function) 프로시저 (Procedure)
📌 목적 결과 하나를 리턴 작업을 수행 (예: INSERT)
🔁 호출 위치 SELECT문 안에서도 사용 가능 SELECT문 안에서는 ❌, PL/SQL 블록에서만 사용
✅ RETURN 사용 필수! 있어도 되고 없어도 됨
🔧 주로 하는 일 계산, 변환, 조합 데이터 처리, 등록, 삭제 등
💡 예시 get_age, get_total_price() insert_member, update_stock()

📌 아주 쉬운 비교 예

비유 Function Procedure
자판기 버튼 누르면 사탕 1개 나옴 배달부 불렀더니 밥 배달, 청소, 장보기 다 함
계산기 입력하면 결과만 출력 종업원은 일만 함, 결과는 없어도 됨

📦 한 줄 요약

함수(Function): 결과 하나 줌
프로시저(Procedure): 결과 없어도 됨, 대신 다양한 일을 함


🎯 정리 끝판왕

항목 Function Procedure
리턴값 ✅ 꼭 있어야 함 (RETURN) ❌ 없어도 됨
사용 위치 SELECT문 안에서도 사용 가능 PL/SQL 블록에서만 사용
주 목적 계산/결과 리턴 작업/처리 수행
실무 예 나이 계산, 할인율 계산 회원등록, 매출업데이트