🍼 프로시저(Procedure)와 함수(Function) 이야기
1. 둘 다 뭐야?
둘 다 "작업 묶음"이야.
- SQL 여러 줄을 한 번에 묶어서 이름을 붙이는 것.
- 매번 같은 SQL을 쓰는 게 귀찮으니까, 묶어두고 필요할 때 이름 부르면 자동으로 실행돼.
👉 그냥 "명령어 모음집" 이라고 생각하면 돼.
2. 비유로 설명할게 🍱
🍱 프로시저 (Procedure)는?
"편의점 도시락"이야.
- 안에 뭐가 들었는지 몰라도,
- 부르면 → "밥이랑 반찬"이 같이 나와.
- 먹고 나면 끝이야. 따로 뭐 받는 거 없어.
👉 결과를 꼭 돌려주진 않아도 됨!
👉 작업 자체가 목적이야!
🍬 함수 (Function)는?
"자판기"야.
- 버튼 누르면
- 딱 하나! 음료수 하나를 꼭 돌려줘.
👉 **반드시 결과(RETURN)**를 하나 줘야 함.
👉 값을 받아오는 게 목적이야!
🧠 핵심 차이 요약!
| 구분 | 프로시저(도시락) | 함수(자판기) |
| 결과 반환 | ❌ 없어도 됨 | ✅ 꼭 하나 줘야 함 |
| 목적 | 일을 처리하는 것 | 값을 돌려주는 것 |
| SQL문 안에서 사용 | ❌ (SELECT문에서 못 씀) | ✅ (SELECT문 안에서도 사용 가능) |
| 예시 | 회원가입 처리, 주문 저장 | 나이 계산, 할인율 계산 |
🛠 쉽게 코드 비교
🍱 프로시저 (도시락 만들기)
CREATE OR REPLACE PROCEDURE make_lunch IS
BEGIN
INSERT INTO lunch_box (menu) VALUES ('김밥+떡볶이+음료수');
END;
부르면 → 도시락 만들어주고 끝!
BEGIN
make_lunch;
END;
🍬 함수 (자판기에서 음료 뽑기)
CREATE OR REPLACE FUNCTION get_coke RETURN VARCHAR2
IS
BEGIN
RETURN '코카콜라 한 캔';
END;
부르면 → 코카콜라를 꼭 하나 돌려줘!
SELECT get_coke FROM DUAL;
🔥 그래서 결론은
프로시저는 "일을 시키는 거"
함수는 "값을 받아오는 거"
딱 이 차이야!
✅ 다시 한번 왕초 간단 요약
| 구분 | 뜻 | 한마디로 |
| 프로시저 | 명령 묶음 | 일 시키기 |
| 함수 | 계산 후 값 반환 | 결과 받기 |
💬 예를 들면 이런 차이야
| 하고 싶은 일 | 쓰는 것 |
| 회원가입 처리하기 | 프로시저 |
| 나이 계산해서 보여주기 | 함수 |
| 주문 내역 저장하기 | 프로시저 |
| 총 합계 구해서 보여주기 | 함수 |
💡 마지막 정리 문장
"프록시저는 일을 해주고, 함수는 결과를 꼭 주는 친구다."
'대덕인재 > Oracle' 카테고리의 다른 글
| [Oracle] 스키마(schema)란? (1) | 2025.05.22 |
|---|---|
| [Oracle D-20] 트리거(trigger) (0) | 2025.04.28 |
| [Oracle D-19] 함수(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 |