包(Package)通常有包声明和包体两部分。

    包声明部分定义了包、声明类型、变量、常量、异常、显式游标、以及可以从包外部调用的子程序。一个包的声明部分就是一个应用编程接口(API)。它提供客户端程序调用包的子程序所需要的全部信息,但没有子程序的执行细节信息。

    包体定义了用于显式游标的查询、子程序的代码。这些都在包声明里声明了。因此一个既没有子程序也没有显式游标的包是不需要包体的。包体也可以定义本地子程序,即没有在包声明部分声明,只能被内部子程序调用的子程序。包体的内容对客户端程序是不可见的,您可以修改包体内容而不用将那些调用包的客户端程序失效。