변수의 기록

(데이터베이스 DB)Stored Procedure와 Stored Function의 차이 본문

CS지식/데이터베이스 (Database)

(데이터베이스 DB)Stored Procedure와 Stored Function의 차이

불광동 물주먹 2025. 5. 17. 02:28

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 예제와 실전 사용 시 주의사항도 함께 다루면 좋습니다. 필요하시면 이어서 정리해드릴 수 있습니다.