반면 패키지 선언부가 아닌 패키지 본문에서도 상수나 변수를 선언해 값을 할당할 수 있는데, 이 경우에는 외부에서 이 상수나 변수를 참조할 수 없고, 오직 해당 패키지 내에서만(패키지에 속한 서브 프로그램) 참조하거나 값을 변경할 수 있다. 그럼 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' 구성 요소가 정의되어야 합니다.
    
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.