【问题标题】:How to alter a package oracle without deleting the package如何在不删除包的情况下更改包 oracle
【发布时间】:2014-01-08 00:05:16
【问题描述】:

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

    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;

【问题讨论】:

    标签: database oracle package alter


    【解决方案1】:

    您不能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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多