ORACLE 스토어드 프로시저(Stored Procedure)와 함수(Function) 차이점 및 예제
Oracle 데이터베이스에서 스토어드 프로시저(Stored Procedure)와 함수(Function)는 PL/SQL 프로그래밍에서 중요한 개념입니다. 둘은 유사하지만 여러 면에서 차이점이 있으며, 사용 목적과 구현 방식에서 다릅니다. 이 글에서는 스토어드 프로시저와 함수의 차이점과 각각의 예제를 설명하겠습니다.
1. 스토어드 프로시저(Stored Procedure)란?
스토어드 프로시저는 여러 SQL 문과 로직을 하나의 저장된 단위로 묶은 것입니다. 주로 데이터를 수정하거나 처리하는 작업을 자동화하고, 반복적인 작업을 효율적으로 수행하는 데 사용됩니다. 스토어드 프로시저는 호출 시 파라미터를 입력받을 수 있으며, 호출한 후 결과를 반환하지 않습니다.
1.1. 스토어드 프로시저 예제
아래 예제는 직원 정보를 삽입하는 스토어드 프로시저입니다.
CREATE OR REPLACE PROCEDURE insert_employee (
p_emp_id IN employees.employee_id%TYPE,
p_name IN employees.employee_name%TYPE,
p_salary IN employees.salary%TYPE
) AS
BEGIN
INSERT INTO employees (employee_id, employee_name, salary)
VALUES (p_emp_id, p_name, p_salary);
END insert_employee;
위 예제에서 insert_employee
프로시저는 직원 ID, 이름, 급여를 파라미터로 받아서 employees
테이블에 데이터를 삽입합니다. 이 프로시저는 결과를 반환하지 않으며, 단순히 작업을 수행합니다.
2. 함수(Function)란?
함수는 특정 작업을 수행하고, 그 결과를 반환하는 PL/SQL 블록입니다. 함수는 호출 시 값을 반환해야 하며, 주로 계산된 결과를 반환하는 데 사용됩니다. 함수는 SELECT 문과 함께 사용할 수 있기 때문에 쿼리 내에서 호출이 가능합니다.
2.1. 함수 예제
다음은 직원 급여를 10% 인상한 값을 반환하는 함수의 예제입니다.
CREATE OR REPLACE FUNCTION calculate_salary (
p_salary IN employees.salary%TYPE
) RETURN employees.salary%TYPE AS
BEGIN
RETURN p_salary * 1.10;
END calculate_salary;
위 예제에서 calculate_salary
함수는 급여를 10% 인상한 값을 반환합니다. 함수는 값을 반환해야 하므로, RETURN
키워드를 사용하여 값을 반환하고 있습니다. 이 함수는 SELECT 쿼리에서 사용할 수 있습니다.
3. 스토어드 프로시저와 함수의 차이점
스토어드 프로시저와 함수는 많은 부분에서 비슷하지만, 몇 가지 중요한 차이점이 있습니다.
- 결과 반환 여부: 함수는 반드시 값을 반환해야 하며, SELECT 문에서 사용 가능합니다. 반면, 스토어드 프로시저는 값을 반환하지 않습니다.
- 사용 위치: 함수는 SQL 문에서 직접 호출할 수 있습니다. 예를 들어,
SELECT
문에서 사용할 수 있습니다. 그러나 스토어드 프로시저는 SQL 문 내에서 직접 호출할 수 없습니다. - 목적: 스토어드 프로시저는 일반적으로 데이터 수정 작업(INSERT, UPDATE, DELETE 등)을 수행하는 데 사용되며, 함수는 데이터를 처리하여 값을 반환하는 데 사용됩니다.
- 호출 방법: 함수는 쿼리 내에서 직접 호출되지만, 스토어드 프로시저는 별도로
EXECUTE
문을 통해 호출해야 합니다.
4. 언제 스토어드 프로시저를 사용하고 언제 함수를 사용해야 할까?
스토어드 프로시저와 함수는 각기 다른 목적을 가지고 있기 때문에 사용 용도에 따라 적합한 것을 선택해야 합니다. 일반적으로 데이터베이스 내에서 값을 계산하거나, 처리된 데이터를 반환할 때는 함수를 사용하고, 데이터 수정 작업이나 복잡한 로직을 처리할 때는 스토어드 프로시저를 사용하는 것이 좋습니다.
5. 결론
Oracle에서 스토어드 프로시저와 함수는 모두 중요한 PL/SQL 도구입니다. 둘 다 SQL 작업을 자동화하고 효율적인 데이터 처리를 가능하게 하지만, 반환 값의 유무와 사용 방식에서 차이가 있습니다. 스토어드 프로시저는 데이터베이스 작업을 수행하고, 함수는 값을 반환하여 데이터를 계산하는 데 유용하게 사용됩니다. 각 상황에 맞는 도구를 선택하여 효율적인 데이터 처리를 구현하세요.
'ORACLE' 카테고리의 다른 글
Oracle에서 프로시저(Procedure)와 함수(Function) 만들기 (0) | 2025.03.31 |
---|---|
ORACLE PL/SQL 트리거(Trigger) 작성 및 활용 사례 (0) | 2025.03.30 |
ORACLE 효율적인 SQL 작성법과 실행 계획(Explain Plan) 분석 (0) | 2025.03.29 |
ORACLE 뷰(View)와 머티리얼라이즈드 뷰(MV)의 차이점 (0) | 2025.03.28 |
Oracle 인덱스 종류 및 성능 최적화 방법 (0) | 2025.03.28 |