Knowledge is that area of ignorance that we arrange and classify. --Ambrose Bierce
From http://www.cs.umb.edu/cs634/ora9idocs/appdev.920/a96624/05_colls.htm.
Many programming techniques use collection types such as arrays, bags,
lists, nested tables, sets, and trees. To support these techniques in database
applications, PL/SQL provides the datatypes TABLE and VARRAY, which allow you to declare index-by tables,
nested tables and variable-size arrays. In this chapter, you learn how those
types let you reference and manipulate collections of data as whole objects.
You also learn how the datatype RECORD lets you treat related but
dissimilar data as a logical unit.
A collection is an ordered group of elements, all of the same type. It is a general concept that encompasses lists, arrays, and other familiar datatypes. Each element has a unique subscript that determines its position in the collection.
PL/SQL offers these collection types:
Although collections can have only one dimension, you can model multi-dimensional arrays by creating collections whose elements are also collections.
To use collections in an application, you define one or more PL/SQL types, then define variables of those types. You can define collection types in a procedure, function, or package. You can pass collection variables as parameters, to move data between client-side applications and stored subprograms.
For more information, see the original document.