|Oracle8i SQLJ Developer's Guide and Reference
This section provides some background conceptual information about Oracle8i objects and collections.
For additional conceptual and reference information about Oracle objects, references, and collections, refer to the Oracle8i SQL Reference and the Oracle8i Application Developer's Guide--Fundamentals.
For information about how to declare objects and collections, see "User-Defined Types in the Database".
Oracle objects (SQL objects) are composite data structures that group related data items, such as various facts about each employee, into a single data unit. An object type is functionally similar to a Java class--you can populate and use any number of individual objects of a given object type, just as you can instantiate and use individual objects of a Java class.
For example, you can define an object type
EMPLOYEE that has the attributes
Oracle objects can also have methods--stored procedures that are associated with the object type. These methods can be either static methods or instance methods that can be implemented either in PL/SQL or in Java. Their signatures can include any number of input, output, or input-output parameters. All of this depends on how they are initially defined.
There are two categories of Oracle collections (SQL collections):
Both categories are one-dimensional, although the elements can be complex object types.
s are used for one-dimensional arrays, while nested table types are used for single-column tables within an outer table. A variable of any
VARRAY type can be referred to as a VARRAY, while a variable of any nested table type can be referred to as a nested table.
A VARRAY, like any array, is an ordered set of data elements with each element having an index and all elements being of the same datatype. The size of a VARRAY refers to the maximum number of elements. Oracle VARRAYs are of variable size (hence the name), but the maximum size of any particular
VARRAY type must be specified when the
VARRAY type is declared.
A nested table is an unordered set of elements. Nested table elements within a table can themselves be queried in SQL, but not in SQLJ. A nested table, like any table, is not created with any particular number of rows. This is determined dynamically.
User-specified object and collection definitions in Oracle8i function as SQL datatype definitions. These datatypes can then be used like any other datatype in defining table columns, SQL object attributes, and stored procedure or function output parameters or return parameters. Also, once you have defined an object type, the related object reference type can be used like any other SQL reference type.
Once you have defined
EMPLOYEE as an Oracle object, as described in "Oracle Object Fundamentals", it becomes an Oracle datatype and you can have a table column of type
EMPLOYEE just as you can have a table column of type
NUMBER. Each row in an
EMPLOYEE column contains a complete
EMPLOYEE object. You can also have a column type of
REF EMPLOYEE, consisting of references to
Similarly, you can define a variable-length array
NUMBER and a nested table
NTBL collection types become Oracle datatypes, and you can have table columns of either type. Each row of a
MYVARR column consists of an array of up to ten numbers; each row of an
NTBL column consists of ten characters.