代码之家  ›  专栏  ›  技术社区  ›  Robert Munteanu

替换Oracle包的一部分

  •  4
  • Robert Munteanu  · 技术社区  · 14 年前

    我能用更改的程序更新包吗(如果是,如何更新?),还是需要提供完整的包定义和实现?

    5 回复  |  直到 14 年前
        1
  •  17
  •   Tony Andrews    14 年前

    您需要替换整个包的规格和主体-您不能只操作包的一部分。

        2
  •  4
  •   JulesLt    14 年前

    只是为了反驳其他人。

    从技术上讲,你可以这样做-你可以写一些东西,在你的补丁文件,检索现有的包源数据库(使用用户源),应用你的补丁,然后重新编译包使用立即执行。

    然而,我认为这不是一个好主意-基于补丁的修复变得非常难以跟踪,尤其是当涉及多个补丁和多个数据库时。把整个文件放到源代码管理中要好得多-你的补丁应该仍然清晰可见。

        3
  •  3
  •   Kirill Leontev    14 年前

    你不能。据我所知,避免引用对象失效的唯一方法是不要接触包声明,只执行 CREATE OR REPLACE PACKAGE BODY .

        4
  •  1
  •   Erich Kitzmueller    14 年前

    由于声明发生了变化,您可以考虑将新过程放入一个新包中,以避免触及现有过程。无论如何,必须调整使用新版本过程的包,以反映声明中的更改(除非它是具有默认值的新参数)。

        5
  •  1
  •   Jeffrey Kemp    14 年前