代码之家  ›  专栏  ›  技术社区  ›  UnhandledExcepSean

Oracle软件包规范的好处是什么?[重复]

  •  0
  • UnhandledExcepSean  · 技术社区  · 7 年前

    有人能告诉我,为什么我们在oracle PL/SQL中需要封装规范吗。 不管怎样,包体的所有信息都符合规范。

    0 回复  |  直到 10 年前
        1
  •  7
  •   Jeffrey Kemp    10 年前

    包规范与包体的分离是PL/SQL等语言设计的一个重要组成部分。这是PL/SQL允许您使用封装原理的方式。

    规范是指定包的公共部分的方式,即其他程序单元或外部调用者应该可以访问的函数、过程、类型和常量。

    主体不仅封装了实现细节,还允许您创建私有的函数和过程;也就是说,它们只允许被同一个包中的其他函数和过程使用,不能被外部调用方调用。

    封装带来了许多好处——包括自我文档:如果一个方法是私有的,那么可以保证除了在同一个包中之外,不会对它进行任何调用——因此,您可以自由地对其进行更改,并且知道您的更改至少不会破坏使用该包的任何其他系统。

    包作为API很有用;然后,该规范成为系统中其他代码所设计并打算调用的功能和过程的文档。

        2
  •  4
  •   Hawk Fabio    10 年前

    包规范包含包中可在包外引用的所有公开可用元素的定义或规范。 规范就像一个大的声明部分;它不包含任何PL/SQL块或可执行代码。如果规范设计得很好,开发人员可以从中学习使用该包所需的一切。永远不应该有任何需要深入到规范的接口后面,查看主体中的实现。

    包中公共元素和私有元素之间的区别使PL/SQL开发人员能够前所未有地控制他们的数据结构和程序。如下图所示 enter image description here 注意里面和外面的两个标签。external由您编写的所有不属于手头软件包的程序(外部程序)组成。内部由包体(包的内部或实现)组成 包装)。

    以下是我们可以从布赫图中得出的结论:

    • 外部程序不能从外到内跨越边界。也就是说,外部程序不能引用或调用包体内部定义的任何元素。它们是私人的,在包裹外面是看不见的。
    • 包装规范中定义的那些元素(图中标记为Public)跨越了内部和外部之间的边界。这些程序可以由外部程序(从外部)调用,也可以由私有程序调用或引用,进而可以调用或引用包中的任何其他元素。
    • 因此,包的公共元素提供了通往包内部的唯一路径。这样,包规范就充当了整个包的控制机制。
    • 如果发现以前的私有对象(如模块或游标)应该公开,只需将该对象添加到包规范中并重新编译即可。然后,它将在包外可见。

    这个解释的灵感来自 oracle pl/sql programming 5th edition 通过 Steven Feuerstein