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

标签 oracle database-design plsql

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

我知道包是过程、函数和不同变量的捆绑。据我了解,它有点对应于 OOP 中的对象。当然,没有什么比实例化包的不同实例更好的了,这样每个实例就有不同的属性值和不同的行为。

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

最佳答案

软件包具有以下优点:

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

关于Oracle - 为什么我应该使用包而不是独立的过程或函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12934984/

相关文章:

sql - 平均 sal 然后按降序排序

java - 从 PL/SQL 中的数据创建 "on the fly"图形图像

oracle - 如何在liquibase中添加复合外键?

database - 请求有关在 Oracle 11g 中定义主键的建议

database-design - 为什么需要在 ERD 中指明识别或非识别关系?

sql - 从 to_char() 输出中删除空白填充

oracle - 输入重复序列号时增加数量字段

oracle - 如何减少 oracle 中的撤消表空间大小?

sql - 从 plsql 过程参数设置 'Order By' 子句

sql - 检查 PL/SQL block 中的表中是否存在行的正确方法