1. 1. Introduction to PL/SQL
    1. Objective
      1. needs
      2. benefits
      3. type of block
      4. output message
    2. About PL/SQL
      1. Procedural Language extension to SQL
      2. Oracle standard
      3. block structure
    3. PL/SQL Environment
      1. PL/SQL engine
      2. Oracle database server
    4. Benefits of PL/SQL
      1. construct with SQL
      2. performance
      3. modularize
      4. integration with oracle tools
      5. portability
      6. exception handling
    5. PL/SQL Block Structure
      1. declare
        1. variable
        2. cursor
        3. user-defined exception
      2. begin
        1. sql statement
        2. plsql statement
      3. exception
        1. action to perform
      4. end
    6. Block Types
      1. anonymous
      2. procedure
      3. function
    7. Program Constructs
      1. tools construct
      2. db construct
      3. anonymous
      4. store procedure or functions
      5. store package
      6. trigger
      7. object type
    8. Create an Anonymous Block
    9. Execute an Anonymous Block
    10. Test the Output of a PL/SQL Block
  2. 2. Declaring PL/SQL Variables
    1. Objectives
    2. Use of Variables
    3. Requirements for Variable Names
    4. Handling Variables in PL/SQL
    5. Declaring and Initializing PL/SQL Variables
    6. Delimiters in String Literals
    7. Type of Variables
    8. Guidelines for Declaring and Initializing PL/SQL Variables
      1. Scalar Data Types
      2. Base Scalar Data Types
      3. Declaring Scalar Variables
      4. %TYPE Attribute
      5. Declaring Variables with the %TYPE Attribute
      6. Declaring Boolean Variables
      7. Bind Variables
      8. Printing Bind Variables
      9. LOB Data Type Variables
      10. Composite Data Types
  3. 3. Writing Executable Statements
    1. Objectives
    2. Lexical Units in a PL/SQL Block
    3. PL/SQL Block Syntax and Guidelines
    4. Commenting Code
    5. SQL Function in PL/SQL
    6. SQL Functions in PL/SQL: Examples
    7. Using Sequences in PL/SQL Expressions
    8. Data Type Conversion
    9. Nested Blocks
    10. Variable Scope and Visibility
    11. Qualify and Identifier
    12. Quiz: Determining Variable Scope
    13. Operations in PL/SQL
      1. Examples
    14. Programming Guidelines
    15. Indenting Code
  4. 4. Interacting with the Oracle Database Server
    1. Objectives
    2. SQL Statements in PL/SQL
    3. select Statement in PL/SQL
    4. Retrieving Data in PL/SQL
    5. Naming Conventions
    6. Using PL/SQL to Manipulate Data
    7. Inserting Data
    8. Updating Data
    9. Deleting Data
    10. Merging Rows
    11. SQL Cursor
    12. SQL Cursor Attributes for Implicit Cursors
  5. 5. Writing Control Structures
    1. Objectives
    2. Controlling Flow of Execution
    3. IF Statement
    4. Simple IF Statement
    5. IF THEN ELSE Statement
    6. IF ELSIF ELSE Clause
    7. NULL Value in IF Statement
    8. CASE Expressions
      1. Example
    9. Searched CASE Expressions
    10. CASE Statement
    11. Handling Nulls
    12. Logic Tables
    13. Boolean Conditions
    14. Iterative Control: LOOP Statements
    15. Basic Loops
    16. WHILE Loops
    17. FOR Loops
    18. Guidelines for Loops
    19. Nested Loops and Lables
    20. PL/SQL CONTINUE Statement
      1. Example
  6. 6. Working with Composite Data Types
    1. Objectives
    2. Composite Data Types
    3. PL/SQL Records
    4. Creating a PL/SQL Record
    5. PL/SQL Record Structure
    6. %ROWTYPE Attribute
      1. Example
    7. Advantages of Using %ROWTYPE
    8. Inserting a Record by Using %ROWTYPE
    9. Updating a Row in a Table by Using a Record
    10. INDEX BY Tables or Associative Arrays
    11. Creating an INDEX BY Table
    12. INDEX BY Table Structure
    13. Creating and INDEX BY Table
    14. Using INDEX BY Table Methods
    15. INDEX BY Table of Records
      1. Example
    16. Nested Tables
    17. VARRAY
  7. 7. Using Explicit Cursors
    1. Objectives
    2. Cursors
    3. Explicit Cursor Operations
    4. Controlling Explicit Cursors
    5. Declaring the Cursor
    6. Opening the Cursor
    7. Fetching Data from the Cursor
    8. Closing the Cursor
    9. Cursors and Records
    10. Cursor FOR Loops
    11. Explicit Cursor Attributes
    12. %ISOPEN Attribute
    13. %ROWCOUNT and %NOTFOUND% Example
    14. Cursor FOR Loops Using Subqueries
    15. Cursors with Parameters
    16. FOR UPDATE Clause
    17. WHERE CURRENT OF Clause
    18. Cursor with Subqueries
  8. 8. Handling Exceptions
    1. Objectives
    2. Example of an Exception
    3. Handling Exceptions with PL/SQL
    4. Handling Exceptions
    5. Exception Types
    6. Trapping Exceptions
    7. Guidelines for Trapping Exceptions
    8. Trapping Predefined Oracle Server Errors
    9. Trapping Non-Predefined Oracle Server Errors
    10. Non-Predefined Error
    11. Functions for Trapping Exceptions
    12. Trapping User-Defined Exceptions
    13. Propagating Exceptions in a Subblock
    14. RAISE_APPLICATION_ERROR Procedure
  9. 9. Creating Stored Procedures and Functions
    1. Objectives
    2. Procedures and Functions
    3. Differences between Anonymous Blocks and Subprograms
    4. Procedure: Syntax
    5. Procedure: Example
    6. Invoking the Procedure
    7. Function: Syntax
    8. Function: Example
    9. Invoking the Function
    10. Passing a Parameter to the Function
    11. Invoking the Function with a Parameter