Oracle Database 강좌/4. PL SQL

프로시저, 함수: 프로시저와 함수의 차이점, 생성 및 호출 방법

_Blue_Sky_ 2024. 10. 7. 13:12
728x90
728x90

PL/SQL 프로시저와 함수: 자세한 차이점과 활용 방법

 

PL/SQL(Procedural Language/SQL)은 Oracle 데이터베이스에서 SQL의 기능을 확장하여 복잡한 비즈니스 로직을 구현할 수 있도록 해주는 프로그래밍 언어입니다. PL/SQL에서 가장 많이 사용되는 서브 프로그램으로 프로시저와 함수가 있는데, 두 가지는 비슷해 보이지만 뚜렷한 차이점을 가지고 있습니다. 이 글에서는 PL/SQL 프로시저와 함수의 차이점을 자세히 설명하고, 각각의 생성 및 호출 방법에 대해 알아보겠습니다.

프로시저(Procedure)

프로시저는 일련의 SQL문과 PL/SQL 문장을 하나의 블록으로 묶어 특정 작업을 수행하는 서브 프로그램입니다. 프로시저는 복잡한 비즈니스 로직을 모듈화하여 관리하기 쉽게 만들고, 코드의 재사용성을 높여줍니다.

특징:

  • 반환값: 반환값이 없거나 여러 개의 값을 반환할 수 있습니다.
  • 호출: CALL 또는 EXECUTE 문을 사용하여 호출합니다.
  • 매개변수: IN, OUT, IN OUT 모드의 매개변수를 사용하여 데이터를 전달하고 받을 수 있습니다.
  • 사용 용도: 데이터베이스에 대한 복잡한 업데이트, 트랜잭션 처리, 예외 처리 등에 주로 사용됩니다.

생성 예시:

CREATE OR REPLACE PROCEDURE update_salary (
    p_emp_id IN employees.employee_id%TYPE,
    p_salary IN NUMBER
)
IS
BEGIN
    UPDATE employees
    SET salary = p_salary
    WHERE employee_id = p_emp_id;
END;
/
 

호출 예시:

CALL update_salary(100, 5000);
 
728x90

함수(Function)

함수는 특정 값을 계산하여 반환하는 서브 프로그램입니다. 함수는 SQL 문장에서 값을 계산하는 표현식처럼 사용될 수 있습니다.

특징:

  • 반환값: 하나의 값만 반환합니다.
  • 호출: SQL 문장 내에서 직접 호출하거나 PL/SQL 블록 내에서 호출합니다.
  • 매개변수: IN 모드의 매개변수만 사용할 수 있습니다.
  • 사용 용도: 데이터베이스 값을 계산하거나, 데이터를 변환하거나, 조건을 판단하는 등에 주로 사용됩니다.

생성 예시:

CREATE OR REPLACE FUNCTION get_employee_name (
    p_emp_id IN employees.employee_id%TYPE
)
RETURN VARCHAR2
IS
    v_name employees.first_name%TYPE;
BEGIN
    SELECT first_name INTO v_name
    FROM employees
    WHERE employee_id = p_emp_id;
    RETURN v_name;
END;
/
 

호출 예시:

SELECT get_employee_name(100) FROM dual;
 

프로시저와 함수의 차이점 비교

반환값 여러 개 또는 없음 하나
호출 방법 CALL 또는 EXECUTE SQL 문장 내 또는 PL/SQL 블록 내
매개변수 IN, OUT, IN OUT IN
주요 용도 복잡한 업데이트, 트랜잭션 처리 값 계산, 데이터 변환

결론

프로시저와 함수는 PL/SQL에서 서브 프로그램을 구현하는 두 가지 중요한 방법입니다. 각각의 특징과 용도를 이해하고 적절하게 사용하면 더욱 효율적인 데이터베이스 애플리케이션을 개발할 수 있습니다.

728x90
728x90