Table of Contents
- List of Figures
- List of Tables
- Title and Copyright Information
- Preface
- Changes in This Release for Oracle Database Object-Relational Developer's Guide
-
1
Introduction to Oracle Objects
- 1.1 About Oracle Objects
- 1.2 Advantages of Objects
-
1.3
Key Features of the Object-Relational Model
-
1.3.1
Database Features of Oracle Objects
- 1.3.1.1 About Object Types
- 1.3.1.2 About Object Instances
- 1.3.1.3 About Object Methods
- 1.3.1.4 How Objects are Stored in Tables
- 1.3.1.5 Object Identifiers Used to Identify Row Objects
- 1.3.1.6 References to Row Objects
- 1.3.1.7 Dereferencing REFs
- 1.3.1.8 Obtaining a REF to a Row Object
- 1.3.1.9 REF Variables Compared
- 1.3.1.10 Oracle Collections Data Types
- 1.3.1.11 Object Views Used to Access Relational Data
- 1.3.1.12 Use of Type Inheritance
- 1.3.1.13 Type Evolution Used to Change an Existing Object Type
- 1.3.2 Language Binding Features of Oracle Objects
-
1.3.1
Database Features of Oracle Objects
-
2
Basic Components of Oracle Objects
-
2.1
SQL Object Types and References
- 2.1.1 Null Objects and Attributes
- 2.1.2 Character Length Semantics
- 2.1.3 Defining Object Tables with Single Constraints
- 2.1.4 Defining Object Tables with Multiple Constraints
- 2.1.5 Defining Indexes for Object Tables
- 2.1.6 Defining Triggers for Object Tables
- 2.1.7 Rules for REF Columns and Attributes
- 2.1.8 Name Resolution
- 2.1.9 Restriction on Using User-Defined Types with a Remote Database
- 2.2 Object Methods
-
2.3
Inheritance in SQL Object Types
- 2.3.1 About Inheritance in SQL Object Types
- 2.3.2 Supertypes and Subtypes
- 2.3.3 FINAL and NOT FINAL Types and Methods for Inheritance
- 2.3.4 Changing a FINAL TYPE to NOT FINAL
-
2.3.5
Subtype Creation
- 2.3.5.1 Creating a Parent or Supertype Object
- 2.3.5.2 Creating a Subtype Object
- 2.3.5.3 Generalized Invocation
- 2.3.5.4 Using Generalized Invocation
- 2.3.5.5 Using Generalized Expression
- 2.3.5.6 Creating Multiple Subtypes
- 2.3.5.7 Creating a Subtype Under Another Subtype
- 2.3.5.8 Creating Tables that Contain Supertype and Subtype Objects
- 2.3.6 NOT INSTANTIABLE Types and Methods
- 2.3.7 Creating a Non-INSTANTIABLE Object Type
- 2.3.8 Changing an Object Type to INSTANTIABLE
- 2.3.9 Overloaded and Overridden Methods
- 2.3.10 Dynamic Method Dispatch
- 2.3.11 Type Substitution in a Type Hierarchy
- 2.3.12 Column and Row Substitutability
- 2.3.13 Newly Created Subtypes Stored in Substitutable Columns
- 2.3.14 Dropping Subtypes After Creating Substitutable Columns
- 2.3.15 Turning Off Substitutability in a New Table
- 2.3.16 Constraining Substitutability
- 2.3.17 Modifying Substitutability on a Table
- 2.3.18 Restrictions on Modifying Substitutability
- 2.3.19 Assignments Across Types
- 2.4 Functions and Operators Useful with Objects
-
2.1
SQL Object Types and References
- 3 Using PL/SQL With Object Types
-
4
Object Support in Oracle Programming Environments
- 4.1 SQL and Object Types
- 4.2 SQL Developer
- 4.3 PL/SQL
- 4.4 Oracle Call Interface (OCI)
- 4.5 Pro*C/C++
- 4.6 Oracle C++ Call Interface (OCCI)
- 4.7 Java Tools for Accessing Oracle Objects
- 4.8 XML
- 4.9 Utilities Providing Support for Objects
-
5
Support for Collection Data Types
-
5.1
Collection Data Types
- 5.1.1 Creating a Collection Type
- 5.1.2 Creating an Instance of a VARRAY or Nested Table
- 5.1.3 Using the Constructor Method to Insert Values into a Nested Table
- 5.1.4 Invoking Constructors Literally to Specify Defaults
- 5.1.5 About Varrays
- 5.1.6 Creating and Populating a VARRAY
- 5.1.7 Nested Tables
- 5.1.8 Increasing the Size and Precision of VARRAY and Nested Table Elements
- 5.1.9 Increasing VARRAY Limit Size
- 5.1.10 Creating a Varray Containing LOB References
- 5.2 Multilevel Collection Types
-
5.3
Operations on Collection Data Types
- 5.3.1 Collection Querying
- 5.3.2 DML Operations on Collections
- 5.3.3 Using BULK COLLECT to Return Entire Result Sets
- 5.3.4 Conditions that Compare Nested Tables
- 5.3.5 Multiset Operations for Nested Tables
- 5.4 Partitioning Tables That Contain Oracle Objects
-
5.1
Collection Data Types
-
6
Applying an Object Model to Relational Data
- 6.1 Why Use Object Views
- 6.2 Defining Object Views
- 6.3 Object Views Used in Applications
- 6.4 Objects Nested in Object Views
- 6.5 Identifying Null Objects in Object Views
- 6.6 Nested Tables and Varrays Used in Object Views
- 6.7 Object Identifiers for Object Views
- 6.8 References Created to View Objects
- 6.9 Creating References to Objects with REF
- 6.10 Inverse Relationships Modelled with Object Views
- 6.11 Object View Manipulations
- 6.12 Applying the Object Model to Remote Tables
- 6.13 Defining Complex Relationships in Object Views
- 6.14 Object View Hierarchies
-
7
Managing Oracle Objects
- 7.1 Privileges on Object Types and Their Methods
-
7.2
Type Dependencies
- 7.2.1 Creating Incomplete Types
- 7.2.2 Completing Incomplete Types
- 7.2.3 Recompiling a Type Manually
- 7.2.4 Using CREATE OR REPLACE TYPE with Type and Table Dependencies
- 7.2.5 Creating or Replacing Type with Force
- 7.2.6 Type Dependencies of Substitutable Tables and Columns
- 7.2.7 The DROP TYPE FORCE Option
- 7.3 Synonyms for Object Types
- 7.4 Performance Tuning
-
8
Advanced Topics for Oracle Objects
-
8.1
Storage of Objects
- 8.1.1 Leaf-Level Attributes
- 8.1.2 How Row Objects Are Split Across Columns
- 8.1.3 Hidden Columns for Tables with Column Objects
- 8.1.4 Hidden Columns for Substitutable Columns and Object Tables
- 8.1.5 Querying for Typeids of Objects Stored in Tables
- 8.1.6 Storage of REFs
- 8.1.7 Internal Layout of Nested Tables
- 8.1.8 Internal Layout of VARRAYs
- 8.2 Creating Indexes on Typeids or Attributes
-
8.3
Type Evolution
- 8.3.1 About Type Evolution
- 8.3.2 Type Evolution and Dependent Schema Objects
- 8.3.3 Options for Updating Data
- 8.3.4 Effects of Structural Changes to Types
- 8.3.5 Altering a Type by Adding and Dropping Attributes
- 8.3.6 Altering a Type by Adding a Nested Table Attribute
- 8.3.7 About Validating Types That Have Been Altered
- 8.3.8 ALTER TYPE Statement for Type Evolution
- 8.3.9 ALTER TABLE Statement for Type Evolution
- 8.4 Storing XMLTypes and LOBs in an ANYDATA Column
-
8.5
System-Defined and User-Defined Constructors
- 8.5.1 The Attribute-Value Constructor
- 8.5.2 Constructors and Type Evolution
- 8.5.3 Advantages of User-Defined Constructors
- 8.5.4 Defining and Implementing User-Defined Constructors
- 8.5.5 Overloaded and Hidden Constructors
- 8.5.6 Calling User-Defined Constructors
- 8.5.7 Constructors for SQLJ Object Types
- 8.6 Transient and Generic Types
- 8.7 User-Defined Aggregate Functions
- 8.8 How Locators Improve the Performance of Nested Tables
-
8.1
Storage of Objects
-
9
Design Considerations for Oracle Objects
- 9.1 General Storage Considerations for Objects
- 9.2 Performance of Object Comparisons
- 9.3 Design Considerations for REFs
- 9.4 Design Considerations for Collections
- 9.5 Design Considerations for Methods
- 9.6 Reusable Code Using Invoker Rights
- 9.7 Roles with Invoker's Rights Subprograms
- 9.8 Replication Support for Objects
- 9.9 Materialized View Support for Objects
- 9.10 Constraints on Objects
- 9.11 Considerations Related to Type Evolution
- 9.12 Parallel Queries with Oracle Objects
- 9.13 Design Consideration Tips and Techniques
- Glossary
- Index