2013-06-07 2 views
0

패키지를 삭제하지 않고이 패키지에 기능을 추가해야합니까? 다른 기능을 추가하기 만하면됩니다.패키지를 삭제하지 않고 패키지 Oracle을 변경하는 방법

DROP PACKAGE BANINST1.SB_ENROLLMENT 
    CREATE OR REPLACE PACKAGE BANINST1.sb_enrollment AS 
    FUNCTION f_query_all_active_ptrm() 
      RETURN enrollment_ref; 
    END sb_enrollment; 
    DROP PACKAGE BODY BANINST1.SB_ENROLLMENT 
    /


    CREATE OR REPLACE PACKAGE BODY BANINST1.sb_enrollment AS 
    FUNCTION f_query_all_active_ptrm() 
      RETURN enrollment_ref; 
     BEGIN 
     END f_query_all_active_ptrm; 
    END sb_enrollment; 

답변

4

새 기능을 추가하려면 패키지를 ALTER 수 없습니다. CREATE OR REPLACE을 사용하고 있기 때문에 패키지 또는 패키지 본체가 DROP 일 필요는 없습니다. 패키지는 단일 객체이기 때문에 패키지 사양과 패키지 본문을 모두 교체해야합니다 (기존 기능과 절차를 모두 포함해야합니다).

CREATE OR REPLACE PACKAGE BANINST1.sb_enrollment 
AS 
    FUNCTION f_query_all_active_ptrm() 
    RETURN enrollment_ref; 

    FUNCTION new_function_name 
    RETURN number; 
END sb_enrollment; 

CREATE OR REPLACE PACKAGE BODY BANINST1.sb_enrollment 
AS 
    FUNCTION f_query_all_active_ptrm() 
    RETURN enrollment_ref; 
    BEGIN 
    <<some implementation>> 
    END f_query_all_active_ptrm; 

    FUNCTION new_function_name 
    RETURN number 
    IS 
    BEGIN 
    RETURN 1; 
    END; 
END sb_enrollment; 
관련 문제