0

我需要在不删除包的情况下向这个包添加一个功能吗?只需添加另一个功能。

    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

1 回答 1

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;
于 2013-06-07T16:00:43.860 回答