728x90
반응형
Oracle의 Procedure
는 반복적인 작업이나 특정 작업을 수행하는 데 사용되는 PL/SQL 코드 블록입니다. 프로시저는 하나의 이름으로 불리며, 특정 작업을 수행하고 필요에 따라 매개변수를 전달받거나 값을 반환할 수 있습니다. 주로 데이터베이스에서 복잡한 비즈니스 로직을 수행하고, 이를 재사용 가능하게 하기 위해 작성됩니다.
- 매개변수 사용: 프로시저는 입력(
IN
), 출력(OUT
), 그리고 입력/출력(IN OUT
) 매개변수를 사용할 수 있습니다. - 값 반환 가능: 함수와는 달리 특정 값을 반환하지 않지만,
OUT
매개변수를 통해 여러 값을 반환할 수 있습니다. - 재사용 가능: 한 번 작성하면 여러 곳에서 호출하여 사용할 수 있습니다.
- 에러 처리: PL/SQL 예외 처리 구문(
EXCEPTION
)을 통해 오류를 관리할 수 있습니다.
sql
CREATE OR REPLACE PROCEDURE procedure_name (parameters)
IS
-- 변수 선언부
BEGIN
-- 프로시저의 메인 로직
EXCEPTION
-- 예외 처리부
END procedure_name;
예제 테이블로 직원 테이블을 사용합니다.
sql
CREATE TABLE employees (
employee_id NUMBER PRIMARY KEY,
name VARCHAR2(50),
salary NUMBER
);
직원의 employee_id
와 raise_amount
를 입력으로 받아서, 해당 직원의 salary
를 증가시키는 프로시저를 작성해보겠습니다.
sql
CREATE OR REPLACE PROCEDURE increase_salary (
p_employee_id IN NUMBER,
p_raise_amount IN NUMBER
) IS
BEGIN
-- 급여를 인상하는 업데이트 쿼리
UPDATE employees
SET salary = salary + p_raise_amount
WHERE employee_id = p_employee_id;
-- 커밋 수행
COMMIT;
END increase_salary;
p_employee_id
: 급여를 인상할 직원의 ID를 받는IN
매개변수입니다.p_raise_amount
: 급여 인상 금액을 받는IN
매개변수입니다.- 이 프로시저는
employees
테이블의salary
를 업데이트하고, 변동 사항을 데이터베이스에 저장하기 위해COMMIT
을 수행합니다.
프로시저를 실행하여 employee_id
가 1번인 직원의 급여를 5000만큼 인상해보겠습니다.
sql
BEGIN
increase_salary(1, 5000);
END;
이 코드를 실행하면 employee_id
가 1인 직원의 salary
가 5000만큼 인상됩니다.
이번에는 특정 직원의 급여를 조회하고, 그 결과를 출력하는 프로시저를 작성해보겠습니다.
sql
CREATE OR REPLACE PROCEDURE get_salary (
p_employee_id IN NUMBER,
p_salary OUT NUMBER
) IS
BEGIN
-- 직원의 급여를 조회하여 OUT 매개변수에 할당
SELECT salary INTO p_salary
FROM employees
WHERE employee_id = p_employee_id;
EXCEPTION
WHEN NO_DATA_FOUND THEN
p_salary := NULL; -- 직원이 없을 경우 NULL 반환
END get_salary;
p_employee_id
: 급여를 조회할 직원의 ID를 받는IN
매개변수입니다.p_salary
: 조회된 급여를 반환하는OUT
매개변수입니다.- 직원 ID가 유효하지 않을 경우
p_salary
에NULL
을 할당합니다.
employee_id
가 1번인 직원의 급여를 출력해보겠습니다.
sql
DECLARE
v_salary NUMBER;
BEGIN
get_salary(1, v_salary);
DBMS_OUTPUT.PUT_LINE('Salary: ' || v_salary);
END;
위 코드를 실행하면 직원 ID가 1번인 직원의 급여가 v_salary
에 저장되고, DBMS_OUTPUT.PUT_LINE
을 통해 출력됩니다.
Oracle의 Procedure
는 복잡한 로직을 데이터베이스 내에서 효율적으로 처리할 수 있도록 도와주는 강력한 도구입니다.
728x90
반응형
'DB' 카테고리의 다른 글
SQLite 암호화 방식: OFB 모드와 CCM 모드의 차이점 (0) | 2024.11.14 |
---|---|
Oracle SQL*Loader sqlldr (1) | 2024.11.13 |
Oracle INDEX (0) | 2024.11.13 |
Oracle Trigger (1) | 2024.11.13 |
Oracle INNER JOIN, OUTER JOIN (0) | 2024.11.13 |