개발자이야기/Oracle

[Oracle] 프로시저(Procedure) 간단예제

퐈니스타일 2023. 7. 31. 10:00

오라클(Oracle)에서 프로시저(Procedure)는 하나 이상의 SQL 문과 PL/SQL(Procedural Language/Structured Query Language) 코드를 가진 데이터베이스 객체입니다. 프로시저는 이름을 가지고 있으며, 일련의 작업을 수행하기 위해 호출될 수 있습니다. 다음은 간단한 예제로 오라클 프로시저를 작성하는 방법을 보여드리겠습니다.

 

1. 우선, 사원 테이블을 생성합니다

CREATE TABLE employees (
    emp_id NUMBER PRIMARY KEY,
    emp_name VARCHAR2(100),
    salary NUMBER,
    department VARCHAR2(50)
);

2. 프로시저를 생성합니다

 

CREATE OR REPLACE PROCEDURE calculate_average_salary (dept_name IN VARCHAR2) IS
    avg_salary NUMBER;
BEGIN
    -- 평균 급여를 계산하여 avg_salary 변수에 저장합니다.
    SELECT AVG(salary) INTO avg_salary
    FROM employees
    WHERE department = dept_name;
    
    -- 결과를 출력합니다.
    DBMS_OUTPUT.PUT_LINE('Department: ' || dept_name || ', Average Salary: ' || avg_salary);
EXCEPTION
    WHEN NO_DATA_FOUND THEN
        DBMS_OUTPUT.PUT_LINE('No employees found in the ' || dept_name || ' department.');
    WHEN OTHERS THEN
        DBMS_OUTPUT.PUT_LINE('Error occurred: ' || SQLERRM);
END;

3.프로시저를 실행합니다.

BEGIN
    calculate_average_salary('IT'); -- IT 부서의 평균 급여를 계산합니다.
    calculate_average_salary('HR'); -- HR 부서의 평균 급여를 계산합니다.
END;

 

프로시저를 호출할 때 부서 이름을 인자로 전달하여 평균 급여를 계산하고, 결과를 출력합니다. 만약 해당 부서에 사원이 없는 경우 NO_DATA_FOUND 예외가 처리되며, 그 외의 다른 예외가 발생하는 경우에는 OTHERS 예외 핸들러에서 오류 메시지가 출력됩니다.

위 예제는 간단한 프로시저 작성 방법을 보여주기 위한 것이며, 실제로는 더 복잡하고 실용적인 작업을 프로시저 내에서 수행할 수 있습니다.

728x90
반응형