如何从包中删除过程或函数
Posted
技术标签:
【中文标题】如何从包中删除过程或函数【英文标题】:How to delete procedure or function from Package 【发布时间】:2012-03-09 09:20:04 【问题描述】:假设您在 Oracle 10g 中创建了一个包,并在该包中定义了一个过程和一个函数。 现在,如何删除创建的包中的特定过程或函数,而无需物理删除包?即不使用 DROP PACKAGE package_name
我想知道我是否真的可以执行上述操作。提前感谢您的任何建议和解决方案。
【问题讨论】:
【参考方案1】:由于包中的所有对象都作为一个单元存储,Oracle 不允许您在不替换整个包主体的情况下修改、删除或添加包或功能。
您可以在at the Oracle forums这个主题上找到一些讨论。
【讨论】:
谢谢!!所以如果你想在包体中做一些修改;我们需要先 DROP 整个包,然后一起重写整个包规范和主体。 @Rishu 是的,有一种方法可以在链接页面的末尾以一种不太方便的方式做到这一点(即将包导出到编辑器) @Rishu:删除过程或函数不需要丢包,只需要从包中删除过程/函数,然后编译包即可。 如果只是你想避免的“drop package”语句,那没问题。您可以使用“创建或替换包”来创建新包或替换现有包。 不一定。如果程序或函数是包私有的——它没有出现在包规范中——那么就不需要CREATE OR REPLACE PACKAGE
;只需CREATE OR REPLACE PACKAGE BODY.
Oracle 会根据包规范而不是包体来授予和跟踪依赖关系。以上是关于如何从包中删除过程或函数的主要内容,如果未能解决你的问题,请参考以下文章
Oracle SQL Developer 从包中删除模式名称