타 프로그램에서 패키지 호출
앞서 설명했듯 패키지 선언부에만 서브 프로그램을 명시하더라도 다른 프로그램에서는 사용할 수 있으며, 해당 서브 프로그램의 구현부는 나중에 작성해도 된다고 했다. 실제로 그런지 직접 확인해 보자.
먼저 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이(가) 컴파일되었습니다.