包是一个大的PL单元,包含很多相关的存储子程序、游标、变量。包的设计跟过程语言设计中的模块概念很接近,因此建议您将相同的业务模块的存储子程序都通过包管理起来。
用包管理存储子程序还有一些特别的原因:
- 包可以对应用程序隐藏执行细节,对客户端程序隐藏执行细节是广泛接受的最佳实践。有不少用户严格遵守这个规范,只允许应用通过包提供的子程序接口去读写数据库。也有一些用户的做法是读数据库允许用 SELECT 查询语句,但是修改数据库必须通过包的子程序去做。因此可以将业务处理逻辑封装在包的子程序中,后期修改也非常方便。
- 包的子程序调用必须要引用包名,这样不用担心后续数据库版本的关键字跟子程序的名字冲突导致应用代码报错。