Oracle - 为什么我应该使用包而不是独立的过程或函数

时间:2012-10-17 13:03:51

标签: oracle

我搜索谷歌,但没有找到任何令人满意的答案,为什么我应该使用包。

我知道一个包是一堆程序,函数和不同的变量。据我所知,它有点对应于OOP中的对象。但是,当然没有什么比实例化包的不同实例更能使每个实例具有不同的属性值并且表现不同。

那么当我可以创建一个独立的过程并单独调用它时,使用包有什么好处?

2 个答案:

答案 0 :(得分:26)

包具有以下优点:

  1. 凝聚力:与特定子系统相关的所有程序和功能都在一个程序单元中。这只是很好的设计实践,但它也更容易管理,例如在源代码管理中。
  2. 常量,子类型和其他有用的东西:PL / SQL比存储过程更多。我们可以在包规范中定义的任何内容都可以与其他程序共享,例如用户定义的异常。
  3. 重载:定义具有相同名称但签名不同的过程或函数的能力。
  4. 安全性:在包体中定义私有过程,这些过程只能由包使用,因为它们未在规范中公开。
  5. 分享公共代码:私人程序的另一个好处。
  6. 我们只需要在包上授予EXECUTE,而不是在几个程序上。

答案 1 :(得分:10)

正如Oracle docs中所述,包裹很好,因为:

  • 模块化
  • 更简单的应用程序设计
  • 信息隐藏
  • 添加了功能
  • 更好的表现

有关每个原因的详细信息,请参阅文档。