如何从Package中删除过程或函数

Ris*_*shu 5 oracle oracle10g

假设您在Oracle 10g中创建了一个包,并在包中定义了一个过程和一个函数.现在,如何删除创建的包中的特定过程或函数,而不是物理地删除包?即不使用DROP PACKAGE package_name

我想知道我是否真的可以执行上述操作.提前感谢您提出任何建议和解决方案.

Joa*_*son 7

由于包中的所有对象都作为一个单元存储,因此Oracle不允许您修改,删除或添加包或函数而不替换整个包体.

您可以在Oracle论坛上找到关于该主题的一些讨论.

  • 不必要.如果程序或函数对包是私有的 - 它没有出现在包规范中 - 那么就不需要`CREATE OR REPLACE PACKAGE`; 只需要"创建或替换包装体".Oracle确实授予并跟踪包规范的依赖性,而不是包体. (4认同)
  • 如果它只是你想要避免的"drop package"语句,那就没问题了.您可以使用"创建或替换包"来创建新包或替换现有包. (3认同)