Notice
Recent Posts
Recent Comments
Link
변수의 기록
(데이터베이스 DB)Stored Procedure와 Stored Function의 차이 본문
Stored Procedure와 Stored Function의 차이
DBMS에서 자주 쓰이는 저장 객체인 **Stored Procedure(저장 프로시저)**와 **Stored Function(저장 함수)**는 언뜻 비슷해 보이지만, 용도와 실행 방식에 있어 중요한 차이가 존재합니다.
각자의 역할과 제약을 이해하고 적절하게 사용하는 것이 중요합니다.
1. 생성 문법
항목 | Stored Procedure | Stored Function |
생성 문법 | CREATE PROCEDURE | CREATE FUNCTION |
값 반환 | RETURN 키워드 사용 불가 (SQL Server에서는 상태 코드용으로 사용 가능) | RETURN 키워드로 반드시 반환값 존재 |
2. 파라미터와 값 반환
항목 | Stored Procedure | Stored Function |
파라미터로 값 반환 | 가능 (OUT, INOUT) | 일부 가능 (Oracle 가능하나 권장 안 함, PostgreSQL 가능) |
반환값 필수 여부 | 필수 아님 | 반드시 반환값 존재해야 함 |
3. 호출 위치
항목 | Stored Procedure | Stored Function |
SQL Statement 내 호출 | 불가능 | 가능 (SELECT, WHERE, INSERT 등에서 사용 가능) |
예시 (Function 사용):
SELECT emp_name, get_tax(salary) FROM employees;
Procedure는 일반 SQL문 내에서 직접 호출할 수 없고, 별도로 CALL 또는 PL/SQL 블록에서 사용해야 합니다.
4. 트랜잭션 사용
항목 | Stored Procedure | Stored Function |
트랜잭션 시작/커밋 | 가능 | 대부분 불가능 (Oracle은 일부 가능) |
Function은 주로 계산용으로 설계되어 있기 때문에 트랜잭션 제어에는 적합하지 않습니다.
5. 주요 사용 목적
항목 | Stored Procedure | Stored Function |
목적 | Business Logic 처리 | 계산 및 단일 값 반환 (Computation) |
- Procedure: 데이터 조작(INSERT/UPDATE/DELETE), 트랜잭션 제어 등 포함된 비즈니스 흐름을 구현
- Function: 특정 입력을 받아 결과만 계산하여 반환하는 용도에 적합
정리 요약

실무 팁
- 복잡한 흐름 제어, 여러 테이블 조작이 필요한 작업 → Stored Procedure
- 단순 계산, 포맷 변경, 단일 값 반환이 필요한 경우 → Stored Function
- SELECT 문 안에서 재사용하려는 함수는 반드시 Stored Function이어야 함
이 내용을 바탕으로 다음 포스팅에서는 Stored Procedure 예제와 실전 사용 시 주의사항도 함께 다루면 좋습니다. 필요하시면 이어서 정리해드릴 수 있습니다.
'CS지식 > 데이터베이스 (Database)' 카테고리의 다른 글
(데이터베이스)트리거(Trigger)란? — Oracle 기준으로 정리하는 SQL 트리거의 개념과 실무 주의사항 (0) | 2025.05.17 |
---|---|
(데이터베이스 )Stored Procedure의 장단점과 일반 백엔드에서의 활용 시 주의점 (0) | 2025.05.17 |
(데이터베이스)Three-tier Architecture와 Stored Function 활용법 (0) | 2025.05.17 |
(데이터베이스)SQL 조인 정리 (0) | 2025.05.14 |
(데이터베이스)SQL에서의 NULL과 Three-Valued Logic: 반드시 알아야 할 핵심 개념 정리 (0) | 2025.05.14 |