【问题标题】:Oracle - Why should I use packages instead of standalone procedures or functionsOracle - 为什么我应该使用包而不是独立的过程或函数
【发布时间】:2012-10-07 18:00:26
【问题描述】:

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

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

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

【问题讨论】:

  • 不是关于“对象”的。能够拥有自己的方法和构造函数的 Oracle(对象)TYPE 相当于 OOP 中的对象。

标签: oracle database-design plsql


【解决方案1】:

包提供以下优点:

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

【讨论】:

  • 凝聚力!好吧,这是在 Java 中编写类时的另一种方式,如果代码不断增长,我们应该将代码分成多个类,对于源代码控制系统来说,如果多个人从一个源文件中推送和合并代码,那将是一场噩梦。
  • @ManishBansal - 这归结为适当的设计和职责分离。如果我们有多个人同时处理同一个包(Java 中的类),那么我们的应用程序架构就会出现严重问题。
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-23
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    • 2012-08-02
    • 2018-05-10
    • 2014-03-12
    • 2012-12-13
    相关资源
    最近更新 更多