반면 패키지 선언부가 아닌 패키지 본문에서도 상수나 변수를 선언해 값을 할당할 수 있는데, 이 경우에는 외부에서 이 상수나 변수를 참조할 수 없고, 오직 해당 패키지 내에서만(패키지에 속한 서브 프로그램) 참조하거나 값을 변경할 수 있다. 그럼 ch12_var 패키지 본문에서 상수와 변수를 선언해 보자.
입력
CREATE OR REPLACE PACKAGE BODY ch12_var IS
-- 상수선언
c_test_bodyCONSTANT VARCHAR2(10) := 'CONSTANT_BODY';
-- 변수선언
v_test_bodyVARCHAR2(10);
END ch12_var;
결과
PACKAGE BODY CH12_VAR이(가) 컴파일되었습니다.
이제 외부에서 위 상수와 변수를 참조하도록 익명 블록을 만들어 보자.
입력
BEGIN
DBMS_OUTPUT.PUT_LINE('ch12_var.c_test_body = '|| ch12_var.c_test_body);
DBMS_OUTPUT.PUT_LINE('ch12_var.v_test_body = '|| ch12_var.v_test_body);
END;
결과
ORA-06550: 줄 2, 열61:PLS-00302: 'C_TEST_BODY' 구성 요소가 정의되어야 합니다.
ORA-06550: 줄 4, 열61:PLS-00302: 'V_TEST_BODY' 구성 요소가 정의되어야 합니다.