본문 바로가기
ORACLE

Oracle에서 프로시저(Procedure)와 함수(Function) 만들기

by samie 2025. 3. 31.
Oracle에서 프로시저(Procedure)와 함수(Function) 만들기

Oracle에서 프로시저(Procedure)와 함수(Function) 만들기

Oracle PL/SQL에서 프로시저(Procedure)함수(Function)를 사용하면 반복되는 SQL 작업을 효과적으로 수행할 수 있습니다. 이번 글에서는 기본 개념과 함께 실전 예제를 설명하겠습니다.

1. 프로시저(Procedure)란?

프로시저는 특정 작업을 수행하는 PL/SQL 블록으로, 매개변수를 받을 수 있고 반환 값은 없습니다.

🔹 프로시저 생성 기본 문법

CREATE OR REPLACE PROCEDURE 프로시저명 (
    매개변수1 데이터타입, 
    매개변수2 데이터타입
) IS
BEGIN
    -- 실행할 SQL 문장
END;
/  
    

🔹 예제: 직원 정보 삽입 프로시저

아래 예제는 직원 정보를 EMPLOYEES 테이블에 추가하는 프로시저입니다.

CREATE OR REPLACE PROCEDURE ADD_EMPLOYEE (
    p_emp_id NUMBER,
    p_name VARCHAR2,
    p_salary NUMBER
) IS
BEGIN
    INSERT INTO EMPLOYEES (EMP_ID, NAME, SALARY)
    VALUES (p_emp_id, p_name, p_salary);
    
    COMMIT;
END;
/  
    

🔹 프로시저 실행 방법

EXEC ADD_EMPLOYEE(101, '홍길동', 5000000);
    

2. 함수(Function)란?

함수는 값을 반환하는 PL/SQL 블록입니다. 특정 연산 후 결과를 반환할 때 유용합니다.

🔹 함수 생성 기본 문법

CREATE OR REPLACE FUNCTION 함수명 (
    매개변수1 데이터타입
) RETURN 반환타입 IS
BEGIN
    -- 실행할 SQL 문장
    RETURN 결과값;
END;
/  
    

🔹 예제: 직원 급여 조회 함수

아래 함수는 직원 ID를 입력하면 급여를 반환합니다.

CREATE OR REPLACE FUNCTION GET_SALARY (
    p_emp_id NUMBER
) RETURN NUMBER IS
    v_salary NUMBER;
BEGIN
    SELECT SALARY INTO v_salary
    FROM EMPLOYEES
    WHERE EMP_ID = p_emp_id;
    
    RETURN v_salary;
END;
/  
    

🔹 함수 실행 방법

SELECT GET_SALARY(101) FROM DUAL;
    

3. 프로시저와 함수의 차이점

구분 프로시저 (Procedure) 함수 (Function)
반환값 없음 반드시 값 반환
사용 방식 EXEC 또는 프로시저 호출 SELECT 문에서 사용 가능
활용 예 데이터 삽입, 수정, 삭제 계산식, 데이터 조회

4. 마무리 및 추가 기능

이번 글에서는 Oracle에서 프로시저와 함수를 만드는 방법을 배웠습니다. 실무에서는 예외 처리(TRY-CATCH), 커서(Cursor), 동적 SQL을 활용하여 더 강력한 기능을 구현할 수도 있습니다.

더 많은 Oracle SQL 예제를 원하시면 아래 글도 참고해보세요:

질문이 있으시면 댓글로 남겨주세요! 😊