내부 변수 값을 가져오는 함수와 할당하는 프로시저를 선언했다. 따라서 외부 프로그램에서는 이 두 서브 프로그램을 통해 내부에 숨겨진 변수를 조작할 수 있다. 그럼 패키지 본문을 작성해 보자.
입력
CREATE OR REPLACE PACKAGE BODY ch12_var IS
-- 상수 선언
c_test_bodyCONSTANTVARCHAR2(10) := 'CONSTANT_BODY';
-- 변수 선언
v_test_body VARCHAR2(10);
-- 내부 변수 값을 가져오는 함수
FUNCTION fn_get_value RETURN VARCHAR2
IS
BEGIN
-- 변수 값을 반환
RETURN NVL(v_test_body, 'NULL 이다');
END fn_get_value;
-- 내부 변수 값을 변경하는 프로시저
PROCEDURE sp_set_value ( ps_value VARCHAR2)
IS
BEGIN
--내부 변수에 값 할당
v_test_body := ps_value;
END sp_set_value;
END ch12_var;
결과
PACKAGE BODY CH12_VAR이(가) 컴파일되었습니다.
성공적으로 컴파일되었다. 이제 두 서브 프로그램을 활용해 내부 변수를 조작하는 익명 블록을 만들어 보자.
입력
DECLARE
vs_value VARCHAR2(10);
BEGIN
-- 값을 할당
ch12_var.sp_set_value ('EXTERNAL');
-- 값 참조
vs_value :=ch12_var.fn_get_value;
DBMS_OUTPUT.PUT_LINE(vs_value);
END;
결과
EXTERNAL