12

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

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

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

4

2 回答 2

29

包提供以下优点:

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

Oracle docs中所述,软件包之所以好,是因为:

  • 模块化
  • 更简单的应用程序设计
  • 信息隐藏
  • 附加功能
  • 更好的性能

文档中解释了每个原因的详细信息。

于 2012-10-17T13:11:51.190 回答