Course Outline
Introduction
- Course Goals and Objectives
- Schedule Overview
- Participant Introductions
- Required Prerequisites
- Participant Responsibilities
SQL Tools
- Learning Objectives
- SQL Developer Environment
- Establishing Connections in SQL Developer
- Inspecting Table Information
- Executing Queries with SQL Developer
- Logging in via SQL*Plus
- Direct Connection Methods
- Using the SQL*Plus Interface
- Terminating a Session
- SQL*Plus Command Reference
- SQL*Plus Configuration Environment
- Understanding the SQL*Plus Prompt
- Retrieving Table Metadata
- Accessing Help Resources
- Executing SQL Scripts
- iSQL*Plus and Entity Models
- The ORDERS Table Structure
- The FILM Table Structure
- Course Table Reference Handout
- SQL Statement Syntax Rules
- Advanced SQL*Plus Commands
Understanding PL/SQL
- Definition of PL/SQL
- Benefits of Using PL/SQL
- PL/SQL Block Architecture
- Outputting Messages
- Code Samples
- Configuring SERVEROUTPUT
- Update Examples and Coding Style Guide
Variables
- Variable Basics
- Data Types in PL/SQL
- Assigning Values to Variables
- Working with Constants
- Local vs. Global Variables
- Using %Type Variables
- Substitution Variables
- Handling Comments with &
- The Verify Option
- Using && Variables
- DEFINE and UNDEFINE Commands
SELECT Statement
- Using the SELECT Statement
- Populating Variables from Data
- %Rowtype Variables
- The CHR Function
- Self-Study Section
- PL/SQL Record Types
- Example Record Declarations
Conditional Statements
- Using the IF Statement
- Integration with SELECT Statements
- Self-Study Section
- The CASE Statement
Error Handling
- Exception Management
- Handling Internal Errors
- Retrieving Error Codes and Messages
- Handling No Data Found Exceptions
- Defining User Exceptions
- Raising Application Errors
- Catching Undefined Errors
- Using PRAGMA EXCEPTION_INIT
- Transaction Control: Commit and Rollback
- Self-Study Section
- Nested PL/SQL Blocks
- Practical Workshop
Iteration and Loops
- The Basic Loop Statement
- While Loops
- For Loops
- Using Goto Statements and Labels
Cursors
- Cursor Fundamentals
- Cursor Attributes
- Explicit Cursors
- Explicit Cursor Examples
- Cursor Declaration
- Variable Declaration for Cursors
- Opening Cursors and Fetching the First Row
- Fetching Subsequent Rows
- Exiting via %Notfound
- Closing the Cursor
- For Loop Implementation I
- For Loop Implementation II
- Update Examples
- Using FOR UPDATE
- Using FOR UPDATE OF
- Using WHERE CURRENT OF
- Committing Changes with Cursors
- Validation Example I
- Validation Example II
- Passing Cursor Parameters
- Practical Workshop
- Workshop Solutions
Procedures, Functions, and Packages
- The CREATE Statement
- Managing Parameters
- Writing the Procedure Body
- Error Reporting
- Describing a Procedure
- Invoking Procedures
- Calling Procedures in SQL*Plus
- Utilizing Output Parameters
- Handling Output Parameters in Calls
- Creating Functions
- Function Examples
- Error Reporting in Functions
- Describing a Function
- Invoking Functions
- Calling Functions in SQL*Plus
- Principles of Modular Programming
- Example Procedure
- Function Invocation Strategies
- Using Functions within IF Statements
- Building Packages
- Package Examples
- Advantages of Using Packages
- Public vs. Private Subprograms
- Error Reporting in Packages
- Describing a Package
- Calling Packages in SQL*Plus
- Calling Packages from Subprograms
- Dropping Subprograms
- Locating Subprograms
- Creating Debug Packages
- Invoking Debug Packages
- Positional and Named Notation
- Parameter Default Values
- Recompiling Procedures and Functions
- Practical Workshop
Triggers
- Creating Database Triggers
- Statement-Level Triggers
- Row-Level Triggers
- Applying WHEN Restrictions
- Selective Triggers using IF
- Error Reporting
- Committing within Triggers
- Trigger Limitations
- Mutating Trigger Issues
- Locating Triggers
- Dropping Triggers
- Generating Auto-Increment Numbers
- Disabling Triggers
- Enabling Triggers
- Naming Conventions for Triggers
Sample Data
- ORDER Tables
- FILM Tables
- EMPLOYEE Tables
Dynamic SQL
- SQL Execution within PL/SQL
- Binding Variables
- Dynamic SQL Concepts
- Native Dynamic SQL
- Handling DDL and DML
- The DBMS_SQL Package
- Dynamic SQL for SELECT Queries
- Dynamic SQL in SELECT Procedures
File Operations
- Working with Text Files
- The UTL_FILE Package
- Write and Append Examples
- File Reading Examples
- Trigger-Based File Examples
- The DBMS_ALERT Package
- The DBMS_JOB Package
Collections
- %Type Variables in Collections
- Record Variables
- Collection Data Types
- Index-By Tables
- Assigning Values to Collections
- Handling Nonexistent Elements
- Nested Tables
- Initialising Nested Tables
- Using Constructors
- Adding Items to Nested Tables
- Varrays
- Varray Initialisation
- Inserting Elements into Varrays
- Multilevel Collections
- Bulk Binding
- Bulk Binding Examples
- Transactional Considerations
- The BULK COLLECT Clause
- Using RETURNING INTO
Ref Cursors
- Cursor Variables Explained
- Defining REF CURSOR Types
- Declaring Cursor Variables
- Constrained vs. Unconstrained Cursors
- Working with Cursor Variables
- Cursor Variable Examples
Requirements
This course is recommended for individuals who already possess a foundational understanding of SQL.
Prior experience with interactive computer systems is advantageous, though not strictly required.
Testimonials (7)
I liked the hands-on experience and the opportunity to work on actual coding activities
Kristine - Isuzu Philippines Corporation
Course - ORACLE PL/SQL Fundamentals
Relate each topic to a real world application case.
Ferdinand - National Grid Corporation of the Philippines
Course - ORACLE PL/SQL Fundamentals
the practices and the trainer notes
Hamda AlMahri - Dubai Courts
Course - ORACLE PL/SQL Fundamentals
Mr. Khobeib was a great lecturer and trainer. As a beginner to PL/SQL, Khobeib explained the basics and was patient with us while going through the training material. He answered all our questions thoroughly and showed a lot of examples when we asked him to. I definitely learned a lot and can start doing tasks with PL/SQL.
Abdulrahman Alsalami - Dubai Courts
Course - ORACLE PL/SQL Fundamentals
the trainer helpful all the time
Maitha Alselais - Dubai Courts
Course - ORACLE PL/SQL Fundamentals
The trainer was fantastic in all aspects. He was very interactive and engaging. Most importantly, the topics were taught very clearly and at a perfect pace to complete the course. I really appreciate it and would like to give a huge thank you to the trainer.
Vivek Thomas - Estee Lauder BV
Course - ORACLE PL/SQL Fundamentals
It was quite hands-on, not too much theory.