Table of Contents
- List of Tables
- Title and Copyright Information
- Preface
- 1 Getting Started
- 2 Introduction to SQLJ
-
3
Key Programming Considerations
- 3.1 Selection of the JDBC Driver
-
3.2
Connection Considerations
- 3.2.1 Single Connection or Multiple Connections Using DefaultContext
- 3.2.2 Closing Connections
- 3.2.3 Multiple Connections Using Declared Connection Context Classes
- 3.2.4 More About the Oracle Class
- 3.2.5 More About the DefaultContext Class
- 3.2.6 Connection for Translation
- 3.2.7 Connection for Customization
- 3.3 NULL-Handling
- 3.4 Exception-Handling Basics
-
3.5
Basic Transaction Control
- 3.5.1 Overview of Transactions
- 3.5.2 Automatic Commits Versus Manual Commits
- 3.5.3 Specifying Auto-Commit as You Define a Connection
- 3.5.4 Modifying Auto-Commit in an Existing Connection
- 3.5.5 Using Manual COMMIT and ROLLBACK
- 3.5.6 Effect of Commits and Rollbacks on Iterators and Result Sets
- 3.5.7 Using Savepoints
- 3.6 Summary: First Steps in SQLJ Code
- 3.7 Oracle-Specific Code Generation (No Profiles)
- 3.8 ISO Standard Code Generation
- 3.9 Oracle-Specific Code Generation Versus ISO Standard Code Generation
- 3.10 Requirements and Restrictions for Naming
- 3.11 Considerations for SQLJ in the Middle Tier
-
4
Basic Language Features
- 4.1 Overview of SQLJ Declarations
- 4.2 Overview of SQLJ Executable Statements
-
4.3
Java Host, Context, and Result Expressions
- 4.3.1 Overview of Host Expressions
- 4.3.2 Basic Host Expression Syntax
- 4.3.3 Examples of Host Expressions
- 4.3.4 Overview of Result Expressions and Context Expressions
- 4.3.5 Evaluation of Java Expressions at Run Time
- 4.3.6 Examples of Evaluation of Java Expressions at Run Time (ISO Code Generation)
- 4.3.7 Restrictions on Host Expressions
- 4.4 Single-Row Query Results: SELECT INTO Statements
- 4.5 Multirow Query Results: SQLJ Iterators
- 4.6 Assignment Statements (SET)
- 4.7 Stored Procedure and Function Calls
-
5
Type Support
- 5.1 Supported Types for Host Expressions
-
5.2
Support for Streams
- 5.2.1 General Use of SQLJ Streams
- 5.2.2 Key Aspects of Stream Support Classes
- 5.2.3 Using SQLJ Streams to Send Data
- 5.2.4 Retrieving Data into Streams: Precautions
- 5.2.5 Using SQLJ Streams to Retrieve Data
- 5.2.6 Stream Class Methods
- 5.2.7 Examples of Retrieving and Processing Stream Data
- 5.2.8 SQLJ Stream Objects as Output Parameters and Function Return Values
- 5.3 Support for JDBC 2.0 LOB Types and Oracle Type Extensions
-
6
Objects, Collections, and OPAQUE Types
- 6.1 Oracle Objects and Collections
- 6.2 Custom Java Classes
- 6.3 User-Defined Types
- 6.4 Strongly Typed Objects and References in SQLJ Executable Statements
-
6.5
Strongly Typed Collections in SQLJ Executable Statements
- 6.5.1 Accessing Nested Tables: TABLE syntax and CURSOR syntax
- 6.5.2 Inserting a Row that Includes a Nested Table
- 6.5.3 Selecting a Nested Table into a Host Expression
- 6.5.4 Manipulating a Nested Table Using TABLE Syntax
- 6.5.5 Selecting Data from a Nested Table Using a Nested Iterator
- 6.5.6 Selecting a VARRAY into a Host Expression
- 6.5.7 Inserting a Row that Includes a VARRAY
- 6.6 Serialized Java Objects
- 6.7 Weakly Typed Objects, References, and Collections
- 6.8 Oracle OPAQUE Types
-
7
Advanced Language Features
-
7.1
Connection Contexts
- 7.1.1 Connection Context Concepts
- 7.1.2 Connection Context Logistics
- 7.1.3 Declaring and Using a Connection Context Class
- 7.1.4 Example of Multiple Connection Contexts
- 7.1.5 Implementation and Functionality of Connection Context Classes
- 7.1.6 Using the IMPLEMENTS Clause in Connection Context Declarations
- 7.1.7 Semantics-Checking of Your Connection Context Usage
- 7.1.8 Standard Data Source Support
- 7.1.9 SQLJ-Specific Data Sources
- 7.1.10 SQLJ-Specific Connection JavaBeans for JavaServer Pages
- 7.1.11 SQLJ Support for Global Transactions
- 7.1.12 Connecting to PDBs
- 7.2 Execution Contexts
- 7.3 Multithreading in SQLJ
- 7.4 Iterator Class Implementation and Advanced Functionality
- 7.5 Advanced Transaction Control
- 7.6 SQLJ and JDBC Interoperability
- 7.7 Support for Dynamic SQL
- 7.8 Using Stored Outlines
- 7.9 Using Plan Baselines
-
7.1
Connection Contexts
- 8 Translator Command Line and Options
- 9 Translator and Run-Time Functionality
- 10 Performance and Debugging
-
A
Customization and Specialized Customizers
- A.1 More About Profiles
- A.2 More About Profile Customization
-
A.3
Customization Options and Choosing a Customizer
- A.3.1 Overview of Customizer Harness Options
- A.3.2 General Customizer Harness Options
- A.3.3 Customizer Harness Options for Connections
- A.3.4 Customizer Harness Options that Invoke Specialized Customizers
- A.3.5 Overview of Customizer-Specific Options
-
A.3.6
Oracle Customizer Options
- A.3.6.1 Options Supported by Oracle Customizer
- A.3.6.2 Oracle Customizer Version Compatibility Option (compat)
- A.3.6.3 Oracle Customizer Force Option (force)
- A.3.6.4 Oracle Customizer Column Definition Option (optcols)
- A.3.6.5 Oracle Customizer Parameter Definition Option (optparams)
- A.3.6.6 Oracle Customizer Parameter Default Size Option (optparamdefaults)
- A.3.6.7 Oracle Customizer CHAR Comparisons with Blank Padding (fixedchar)
- A.3.6.8 Oracle Customizer Show-SQL Option (showSQL)
- A.3.6.9 Oracle Customizer Statement Cache Size Option (stmtcache)
- A.3.6.10 Oracle Customizer Summary Option (summary)
- A.3.7 Options for Other Customizers
- A.3.8 SQLJ Translator Options for Profile Customization
- A.4 JAR Files for Profiles
- A.5 SQLCheckerCustomizer for Profile Semantics-Checking
-
A.6
AuditorInstaller Customizer for Debugging
- A.6.1 Overview of Auditors and Code Layers
- A.6.2 Invoking AuditorInstaller with the Customizer Harness debug Option
- A.6.3 AuditorInstaller Run-Time Output
-
A.6.4
AuditorInstaller Options
- A.6.4.1 AuditorInstaller Depth Option (depth)
- A.6.4.2 AuditorInstaller Log File Option (log)
- A.6.4.3 AuditorInstaller Prefix Option (prefix)
- A.6.4.4 AuditorInstaller Return Arguments Option (showReturns)
- A.6.4.5 AuditorInstaller Thread Names Option (showThreads)
- A.6.4.6 AuditorInstaller Uninstall Option (uninstall)
- A.6.5 Full Command-Line Examples
- Index