有人能告诉我,为什么我们在oracle PL / SQL中需要打包Spec。 无论如何,包体都具有规格的所有信息。
答案 0 :(得分:7)
将包规范与包Body分离是PL / SQL等语言设计的一个基本重要部分。这是PL / SQL允许您使用封装原理的方式。
规范是指定包的Public部分的方式,即其他程序单元或外部调用者应该可以访问的函数,过程,类型和常量。
Body不仅封装了实现细节,还允许您创建Private的功能和过程;也就是说,它们只允许被同一个包中的其他函数和过程使用,并且不能被外部调用者调用。
封装带来了许多好处 - 包括自我记录:如果一个方法是私有的,你可以保证除了在同一个包中之外不会有任何调用 - 所以你可以自由地改变它,保证知识的安全您的更改至少不会破坏使用该软件包的任何其他系统。
包作为API很有用;然后,规范成为系统中其他代码调用的函数和过程的文档。
答案 1 :(得分:4)
包规范包含包中可以在包外引用的所有公共可用元素的定义或规范。 规范就像一个大的声明部分;它不包含任何PL / SQL块或可执行代码。如果规范设计得很好,开发人员可以从中学习使用该软件包所需的一切。应该永远不需要在规范的界面“后面”并查看正文中的实现。
包中的公共元素和私有元素之间的区别使PL / SQL开发人员能够对其数据结构和程序进行前所未有的控制。如下面的Booch图所示 注意内部和外部的两个标签。外部包含您编写的所有程序,这些程序不是手头程序包的一部分(外部程序)。内部由包体(内部或实现)组成 封装)。
以下是我们可以从Booch图中得出的结论:
此解释的灵感来自oracle pl/sql programming 5th edition
的Steven Feuerstein