더북(TheBook)

타 프로그램에서 패키지 호출

앞서 설명했듯 패키지 선언부에만 서브 프로그램을 명시하더라도 다른 프로그램에서는 사용할 수 있으며, 해당 서브 프로그램의 구현부는 나중에 작성해도 된다고 했다. 실제로 그런지 직접 확인해 보자.

먼저 hr_pkg의 선언부에 사번을 입력받으면 해당 사원이 속한 부서명을 반환하는 함수를 추가한 뒤, 이 함수를 호출하는 프로시저를 만들어 보자.

입력

    CREATE OR REPLACE PACKAGE hr_pkg IS

    ...
    ...

      -- 사번을 입력받아 부서명을 반환하는 함수
      FUNCTION fn_get_emp_name ( pn_employee_id IN NUMBER )
        RETURN VARCHAR2;

    END  hr_pkg;

결과

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

새로 추가한 함수를 사용하는 프로시저를 만들어 보자.

입력

    CREATE OR REPLACE PROCEDURE ch12_dep_proc ( pn_employee_id IN NUMBER )
    IS
      vs_dep_name departments.department_name%TYPE;  -- 부서명 변수
    BEGIN

      -- 부서명 가져오기
      vs_dep_name := hr_pkg.fn_get_dep_name (pn_employee_id);

      -- 부서명 출력
      DBMS_OUTPUT.PUT_LINE(NVL(vs_dep_name, '부서명 없음'));

    END;

결과

    PROCEDURE CH12_DEP_PROC이(가) 컴파일되었습니다.
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.