반응형

Oracle Procedure 오라클 프로시저 프로시져

  • OracleProcedure반복적인 작업 이나 특정 작업을 수행 하는 데 사용되는 PL/SQL 코드 블록입니다.
  • 프로시저는 하나의 이름으로 불리며, 특정 작업을 수행하고 필요에 따라 매개변수를 전달받거나 값을 반환할 수 있습니다.
  • 주로 데이터베이스에서 복잡한 비즈니스 로직을 수행하고, 이를 재사용 가능하게 하기 위해 작성됩니다.


1. 프로시저의 주요 특징

  • 매개변수 사용 : 프로시저는 입력(IN), 출력(OUT), 그리고 입력/출력(IN OUT) 매개변수를 사용할 수 있습니다.
  • 값 반환 가능 : 함수와는 달리 특정 값을 반환하지 않지만, OUT 매개변수를 통해 여러 값을 반환할 수 있습니다.
  • 재사용 가능 : 한 번 작성하면 여러 곳에서 호출하여 사용할 수 있습니다.
  • 에러 처리 : PL/SQL 예외 처리 구문(EXCEPTION)을 통해 오류를 관리할 수 있습니다.


2. 프로시저 기본 구조

  • sql

      CREATE OR REPLACE PROCEDURE procedure_name (parameters)
      IS
          -- 변수 선언부
      BEGIN
          -- 프로시저의 메인 로직
      EXCEPTION
          -- 예외 처리부
      END procedure_name;
    


3. 프로시저 예제

3.1 직원 급여를 증가시키는 프로시저

  • 예제 테이블로 직원 테이블을 사용합니다.
    • sql

        CREATE TABLE employees (
            employee_id NUMBER PRIMARY KEY,
            name VARCHAR2(50),
            salary NUMBER
        );
      

3.2 프로시저 작성

  • 직원의 employee_idraise_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;
    

3.3 프로시저 설명

  • p_employee_id : 급여를 인상할 직원의 ID를 받는 IN 매개변수입니다.

  • p_raise_amount : 급여 인상 금액을 받는 IN 매개변수입니다.

  • 이 프로시저는 employees 테이블의 salary를 업데이트하고, 변동 사항을 데이터베이스에 저장하기 위해 COMMIT을 수행합니다.


3.4 프로시저 실행 예제

  • 프로시저를 실행하여 employee_id가 1번인 직원의 급여를 5000만큼 인상해보겠습니다.

  • sql

      BEGIN
          increase_salary(1, 5000);
      END;
    
  • 이 코드를 실행하면 employee_id가 1인 직원의 salary가 5000만큼 인상됩니다.



2. OUT 매개변수를 사용하는 프로시저 예제

  • 이번에는 특정 직원의 급여를 조회하고, 그 결과를 출력하는 프로시저를 작성해보겠습니다.

2.1 프로시저 작성

  • 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;
    

2.2 프로시저 설명

  • p_employee_id: 급여를 조회할 직원의 ID를 받는 IN 매개변수입니다.

  • p_salary: 조회된 급여를 반환하는 OUT 매개변수입니다.

  • 직원 ID가 유효하지 않을 경우 p_salaryNULL을 할당합니다.

2.3 프로시저 실행 예제

  • 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을 통해 출력됩니다.

  • OracleProcedure는 복잡한 로직을 데이터베이스 내에서 효율적으로 처리할 수 있도록 도와주는 강력한 도구입니다.




  • 도움이 되셨으면 하단의 ❤️ 공감 버튼 부탁 드립니다. 감사합니다! 😄
  • 일부 모바일 환경에서는 ❤️ 버튼이 보이지 않습니다.

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

+ Recent posts