(2) Introduction to PL/SQL
(3) Language, Identifiers, Declarations
(5) Interaction with the Oracle Server
(6) Control Structures
(7) Composite Data Types
(8) Cursors and Static SQL
- Implicit Cursors
- Cursor FOR LOOP
- Explicit Cursors (Declare, Open, Fetch, Close)
- Cursor Variables
- SELECT FOR UPDATE and WHERE CURRENT Clauses
(9) Exception Handling
- Compilation warnings, compilation errors, run-time errors
- Using DBMS_WARNING
- Exception handling: subprograms and error propagation
- Exception handling: nested blocks
(10) Subprograms: Blocks and Stored Procedures
(11) Subprograms: Stored Functions
- Using RESULT_CACHE option
- Application context and Result Cache
- Pragma RESTRICTS_REFERENCES
- Invoking functions from SQL statments
- Execution right: Invoker's x Definer's
- Side effects when calling Functions
(12) Packages
- Advantages of Packages
- Package initialization and persistent state
- SERIALLY_REUSABLE Clause
- Accessing Package variables: Restriction
- Information about Packages in the data dictionary
- Dependencies between subprograms
- Breaking the cycle of dependency with Packages
(14) Implement Oracle-Supplied Packages in Application Development
- Using DBMS_PIPE for intersession communication
- Using the UTL_FILE Package to Interact with Operating System Files
- Using DBMS_SPACE
- Using DBMS_LOB package
(15) Dynamic SQL
- Native Dynamic SQL: EXECUTE IMMEDIATE
- Native Dynamic SQL: OPEN FOR, FETCH and CLOSE
- Using the DBMS_SQL Package
- SQL Injection
(16) Design Considerations for PL/SQL Code
(17) Triggers
(18)Compound, DDL, and Event Database Triggers
- On Compound Triggers
- Create Triggers on DDL Statements
- Create Database-Event and System-Events Triggers
(19) PL/SQL Compiler
(20) Manage PL/SQL Code
(21) Manage Dependencies
(22) External Procedures
(23) Working with Large Objects