반응형
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
반응형
'SQL' 카테고리의 다른 글
2정규형(2NF)의 개념 (0) | 2025.05.03 |
---|---|
1정규형(1NF)의 개념 (0) | 2025.05.03 |
Oracle INDEX 오라클 인덱스 (0) | 2024.11.13 |
Oracle Trigger 오라클 트리거 (1) | 2024.11.13 |
Oracle INNER JOIN, OUTER JOIN 오라클 이너 조인 아우터 조인 (0) | 2024.11.13 |