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
'Oracle Database 강좌 > 4. PL SQL' 카테고리의 다른 글
예외 처리: EXCEPTION 처리 (0) | 2024.10.07 |
---|---|
제어문: IF, LOOP, FOR 등 (0) | 2024.10.07 |
변수 선언 및 할당: 변수의 종류와 사용법 (0) | 2024.10.07 |
PL/SQL 블록 구조: DECLARE, BEGIN, END 키워드 설명 (0) | 2024.10.07 |
PL/SQL이란 무엇인가요? PL/SQL의 개념과 특징 (0) | 2024.10.07 |