더북(TheBook)

hr_pkg의 fn_get_dep_name 함수의 본문이 없더라도 선언부에 있으니 오류 없이 성공적으로 컴파일되었다. 물론 ch12_dep_proc를 실행하면 실행 시점에는 오류가 날 테지만, 나중에 구현부가 완성된 뒤에 이 프로시저를 다시 컴파일할 필요는 없다. 이제 fn_get_dep_name 함수의 본문을 작성해 보자.

입력

    CREATE OR REPLACE PACKAGE BODY hr_pkg IS

    ...
    ...
      -- 사번을 입력받아 부서명을 반환하는 함수
      FUNCTION fn_get_emp_name ( pn_employee_id IN NUMBER )
        RETURN VARCHAR2
      IS
        vs_emp_name employees.emp_name%TYPE;
      BEGIN
        -- 부서 테이블과 조인해 사번을 이용, 부서명까지 가져온다.
        SELECT b.department_name
          INTO vs_dep_name
          FROM employees a, departments b
         WHERE a.employee_id = pn_employee_id
           AND a.department_id = b.department_id;

        -- 부서명 반환
        RETURN vs_dep_name;

      END fn_get_dep_name;

    END  hr_pkg;

결과

    PROCEDURE HR_PKG이(가) 컴파일되었습니다.

이제 ch12_dep_proc 프로시저를 실행해 보자.

입력

    EXEC ch12_dep_proc(177);

결과

    영업부

177번 사원의 부서명은 영업부이고, 패키지 본문이 추가됐지만 해당 패키지를 호출하는 프로시저를 다시 컴파일할 필요가 없음을 알 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.