🍼 함수(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 블록에서만 사용 |
| 주 목적 | 계산/결과 리턴 | 작업/처리 수행 |
| 실무 예 | 나이 계산, 할인율 계산 | 회원등록, 매출업데이트 |
'대덕인재 > Oracle' 카테고리의 다른 글
| [Oracle D-20] 트리거(trigger) (0) | 2025.04.28 |
|---|---|
| [Oracle D-19] 이해가 안가서 다시 보는 왕초보 버전 프로시저(Procedure)와 함수(Function) 이야기 (0) | 2025.04.25 |
| [Oracle D-19] 프로시저 (Procedure) (0) | 2025.04.25 |
| [Oracle D-18] 커서 (CURSOR)/ 암시적 커서 (implicit cursor)와 명시적 커서 (explicit cursor) (0) | 2025.04.24 |
| [Oracle D-18] 반복문 (0) | 2025.04.24 |