Oracle 9i Programming -- A Primer
	   Rajshekhar Sunderraman

1. The Relational Data Model
1.1  The Relational Database
1.2  Integrity Constraints
1.3  Tabular View of a Relation
1.4  Sample Databases
1.5  Relational Algebra
1.5.1  Set-Theoretic Operations
1.5.2  Relation-Theoretic Operations
1.5.3  Queries in Relational Algebra

2 Oracle SQL
2.1  Oracle SQL*Plus
2.1.1  Entering and Exiting SQL*Plus
2.1.2  Executing Commands in SQL*Plus
2.1.3  Buffer Manipulation Commands
2.1.4  Formatting Query Results
2.1.5  Screen Capture of an SQL*Plus Session
2.2  Creating, Dropping and Altering Tables
2.2.1  drop table
2.2.2  create table
2.2.3  alter table
2.3  Inserting Rows
2.4  Querying the Database
2.4.1  Simple select statement
2.4.2  Subselects
2.4.3  Union
2.4.4  Forall queries
2.4.5  Aggregate functions
2.4.6  The group by and having clauses
2.4.7  The full select statement
2.4.8  String, number, and date functions
2.5  Views
2.5.1  create view
2.5.2  drop view
2.6  Modifying the Database
2.6.1  Insert
2.6.2  Update
2.6.3  Delete
2.6.4  Commit and rollback
2.7  Sequences
2.8  Oracle Data Dictionary
2.8.1  The user_catalog table
2.8.2  The user_objects table
2.8.3  The user_tables table
2.8.4  The user_tab_columns table
2.8.5  The user_views table
2.9  Oracle9i Object Features
2.9.1  The create type Statement
2.9.2  The varying array Collection Type
2.9.3  Inserting Rows
2.9.4  User-Defined Methods
2.9.5  Nested Tables
2.9.6  Object Tables
2.9.7  Inserting Rows into Nested Tables
2.9.8  Querying and Accessing Data

3 PL/SQL
3.1  What is PL/SQL
3.2  Datatypes and Variables
3.3  Program Control Statements
3.3.1  Null statement
3.3.2  Assignment statement
3.3.3  Conditional statements
3.3.4  Loops
3.4  Program Structure
3.4.1  Anonymous blocks
3.4.2  Procedures and functions
3.4.3  Stored procedures and functions
3.4.4  Packages
3.5  Triggers
3.6  Database Access Using Cursors
3.6.1  Explicit Cursors
3.6.2  Parameterized Cursors
3.6.3  Select for Update
3.6.4  Cursor Variables
3.7  PL/SQL Records
3.7.1  Table-based records
3.7.2  Cursor-based records
3.7.3  Programmer defined records
3.8  PL/SQL Tables
3.9  Built-in Packages
3.9.1  Package dbms_output
3.9.2  Package dbms_sql
3.10 Error Handling
3.11 PL/SQL Access to Oracle9i Objects
3.11.1 Declaring and Initializing Objects
3.11.2 Object Type Method Implementation
3.11.3 Accessing Database Objects in PL/SQL
3.11.4 Accessing Varying Arrays in PL/SQL
3.11.5 Built-In Methods for Collection Objects

4 Web Programming with PL/SQL
4.1  HTTP
4.1.1  Resources and URLs
4.1.2  Format of HTTP Messages
4.2  A Simple Example
4.3  Printing HTML Tables
4.4  Passing Parameters
4.4.1  Flexible Parameter Passing
4.5  Processing HTML Forms
4.6  Multi-Valued Parameters
4.6.1  Procedure process_teacher_option
4.6.2  Procedure select_course
4.6.3  Procedure process_teacher_sub_option
4.6.4  Procedure add_scores
4.6.5  Procedure process_scores
4.6.6  Procedure insert_scores
4.7  PL/SQL Web Toolkit
4.7.1  Table Printing Utility
4.7.2  Dynamic SQL
4.8  PL/SQL Server Pages (PSP)
4.8.1  Parameter Passing in PSP
4.8.2  Other PSP Syntax

5 Oracle JDBC
5.1  What is JDBC?
5.2  A Simple Example
5.3  Developing JDBC Applications
5.3.1  Loading the JDBC drivers
5.3.2  Connecting to the database
5.3.3  The Connection object
5.4  Non-Query SQL Statements
5.4.1  Using the Statement object
5.4.2  Using the PreparedStatement object
5.4.3  Using the CallableStatement object
5.5  Executing SQL Queries
5.5.1  The ResultSet class
5.5.2  ResultSet methods
5.5.3  An SQL query example
5.5.4  ResultSet metadata
5.5.5  Oracle REFCURSOR type
5.5.6  Processing multiple ResultSets
5.6  Grade Book Application
5.6.1  Function select_course
5.6.2  Function add_enrolls
5.6.3  Function add_scores
5.6.4  Function modify_scores
5.7  Database Metadata
5.8  Errors and Warnings
5.8.1  The SQLException class
5.8.2  The SQLWarning class
5.8.3  The DataTruncation class
5.9  Scrollable ResultSets

6 SQLJ: Embedded SQL in Java
6.1  What is SQLJ?
6.2  Simple Example
6.3  Compiling SQLJ Programs
6.4  Multiple Connections
6.5  Host Variables and Expressions
6.6  SQLJ Iterators
6.6.1  Named Iterators
6.6.2  Positional Iterators
6.7  Dynamic SQL using JDBC
6.8  Calling PL/SQL from within SQLJ
6.9  Investment Portfolio Database Application

7 Oracle Web Programming with Java Servlets
7.1  A Simple Servlet
7.2  HTTP Servlet API Basics
7.2.1  The HttpServlet Class
7.2.2  The HttpServletRequest Class
7.2.3  The HttpServletResponse Class
7.3  Web Shopping Application
7.4  HTML Form Processing in Servlets
7.5  SearchParts and AddToCart
7.6  Oracle's Dynamic HTML Generation Package
7.6.1  A Simple Example
7.6.2  HTML Form Processing
7.6.3  Formatting HTML Tables
7.7  Java Server Pages

8 Oracle XML
8.1  Basic Syntax
8.1.1  XML Elements
8.1.2  XML Attributes
8.1.3  Mixing Elements and Textual Data
8.1.4  Miscellaneous Constructs
8.2  Document Type Definitions (DTDs)
8.3  XML Parsing in Java
8.3.1  SAX Parsing
8.3.2  DOM Parsing
8.4  Oracle XML-SQL Utility (XSU)
8.4.1  Canonical SQL to XML Mapping
8.4.2  Canonical XML to SQL Mapping
8.4.3  XSU Java API
8.5  XMLType
8.5.1  XMLType Columns in a Table
8.5.2  Querying XML Data
8.5.3  Updating and Deleting XML Data

9 Projects 
9.1  Airline Flight Information System
9.2  Library Database Application
9.3  University Student Database
9.4  Video Chain Database
9.5  Banking Database
9.6  BiBTeX Database
9.7  Music Store Database
9.8  Online Auctions Database
9.9  Oracle Data Dictionary Browser
9.10 Oracle Data Browser on the Web
9.11 QBE Interface on the Web
9.12 A Web Survey Management System