Oracle PL/SQL을 공부하다 보면 자연스럽게 마주치는 개념 중 하나가 바로 **Subprogram(서브프로그램)**입니다. 서브프로그램은 쉽게 말해 반복해서 사용할 수 있는 코드 덩어리인데요, 그중에서도 오늘은 **프로시저(Procedure)**에 대해 자세히 알아보겠습니다.
서브프로그램은 PL/SQL에서 일정한 기능을 수행하는 코드 블록을 재사용 가능하게 만든 것입니다. 크게 두 가지로 나눌 수 있어요:
이번 글에서는 **프로시저(Procedure)**에 집중해서 설명드릴게요.
**프로시저(Procedure)**는 미리 정의해둔 일련의 SQL 문장들을 이름으로 묶어놓은 것입니다. 필요할 때마다 호출해서 사용할 수 있고, 인자를 받아 처리할 수 있어 재사용성과 유지보수성이 매우 뛰어납니다.
CREATE [OR REPLACE] PROCEDURE 프로시저명 (
매개변수1 [IN|OUT|IN OUT] 데이터타입,
...
) IS
BEGIN
-- 실행할 코드
END;
CREATE OR REPLACE PROCEDURE print_employee_name (
p_emp_id IN employees.employee_id%TYPE
)
IS
v_name employees.last_name%TYPE;
BEGIN
SELECT last_name INTO v_name
FROM employees
WHERE employee_id = p_emp_id;
DBMS_OUTPUT.PUT_LINE('사원 이름: ' || v_name);
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('해당 사원이 존재하지 않습니다.');
END;
호출 방법:
BEGIN
print_employee_name(100);
END;
CREATE OR REPLACE PROCEDURE get_salary (
p_emp_id IN employees.employee_id%TYPE,
p_salary OUT employees.salary%TYPE
)
IS
BEGIN
SELECT salary INTO p_salary
FROM employees
WHERE employee_id = p_emp_id;
EXCEPTION
WHEN NO_DATA_FOUND THEN
p_salary := 0;
END;
호출 방법:
DECLARE
v_sal NUMBER;
BEGIN
get_salary(100, v_sal);
DBMS_OUTPUT.PUT_LINE('급여: ' || v_sal);
END;
프로시저는 단순 반복 작업을 자동화하거나, 여러 SQL 문을 묶어 관리할 때 매우 유용합니다.
업무 로직을 분리해 깔끔한 코드를 만들고, 유지보수까지 쉽게 해주는 PL/SQL의 핵심 기능이죠.
다음 글에서는 함수(Function)와의 차이점, 그리고 트리거와 함께 활용하는 예제도 소개해볼게요!
| [오라클 DB 스터디] Oracle Exception(예외처리)을 배웁니다 (0) | 2025.04.30 |
|---|---|
| [오라클 DB 스터디] Sequence / Synonym (0) | 2025.04.23 |
| [오라클 DB 스터디] View (0) | 2025.04.22 |
| [오라클 DB 스터디] 제약조건 (0) | 2025.04.21 |
| [오라클 DB 스터디] 커서(Cursor) - 2 (0) | 2025.03.30 |
댓글 영역