더북(TheBook)

내부 변수 값을 가져오는 함수와 할당하는 프로시저를 선언했다. 따라서 외부 프로그램에서는 이 두 서브 프로그램을 통해 내부에 숨겨진 변수를 조작할 수 있다. 그럼 패키지 본문을 작성해 보자.

입력

    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
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.