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

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

    먼저 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이(가) 컴파일되었습니다.
    
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.