Now that we’ve looked at PL/SQL’s structure and its most common programming constructs, we’re ready to group these elements into tidy little structures called packages. A package is a container (hence the name) for other PL/SQL elements, such as variables and constants, procedures and functions, and datatype definitions.
A package has two parts: a specification and a body. The specification is a sort of table of contents that lists the items in the package. The body contains the implementations for each item. For example, the specification tells us “This package contains a procedure named `foo', which has the following parameters.” The body of the package contains the actual implementation of foo.
Packages are the most powerful and useful PL/SQL constructs because they help us build standard code libraries with well-defined application programming interfaces (APIs). In a web environment, for example, you can create standard libraries to handle security, page formatting, or list of values (LOV) generation. Each time you build a new application, you can just plunk in calls to these standard libraries, rather than reinventing them for each new system. Packages are also excellent for building abstract data types (ADTs), a fancy terminology for structures like stacks, lists, and queues.
Prebuilt packages with clear APIs encourage software reuse, the Holy Grail of software engineering. In this final section, we’ll learn how to use packages effectively. We’ll start by looking ...