Course Outline
Introduction
- Course Aims and Objectives
- Session Schedule
- Participant Introductions
- Prerequisites Review
- Role Responsibilities
SQL Tools
- Learning Objectives
- Overview of SQL Developer
- Connecting via SQL Developer
- Reviewing Table Information
- Running Queries in SQL Developer
- Logging into SQL*Plus
- Establishing Direct Connections
- Using SQL*Plus
- Terminating Sessions
- SQL*Plus Command Set
- SQL*Plus Environment Setup
- Prompt Configuration
- Retrieving Table Metadata
- Accessing Help Resources
- Executing SQL Scripts
- iSQL*Plus and Entity Models
- Exploring the ORDERS Tables
- Examining the FILM Tables
- Course Tables Reference Sheet
- SQL Statement Syntax Rules
- SQL*Plus Command Reference
What is PL/SQL?
- Defining PL/SQL
- Benefits of Using PL/SQL
- Understanding Block Structure
- Displaying Output Messages
- Sample Code Walkthrough
- Configuring SERVEROUTPUT
- Update Example and Style Guide
Variables
- Variable Concepts
- Data Types
- Assigning Variables
- Working with Constants
- Local vs. Global Variables
- %Type Variable Usage
- Substitution Variables
- Using Comments with &
- Verification Options
- && Variable Handling
- Defining and Undefining Variables
SELECT Statement
- Using the SELECT Statement
- Populating Variables from Queries
- %Rowtype Variable Implementation
- The CHR Function
- Self-Study Activity
- PL/SQL Records
- Declaration Examples
Conditional Statement
- The IF Statement
- Conditional SELECT Statements
- Self-Study Exercise
- The Case Statement
Trapping Errors
- Exception Handling Basics
- Managing Internal Errors
- Error Codes and Messages
- Handling No Data Found
- Raising User Exceptions
- Raising Application Errors
- Catching Undefined Errors
- Using PRAGMA EXCEPTION_INIT
- Commit and Rollback Strategies
- Self-Study Task
- Nested Blocks in Error Handling
- Practical Workshop
Iteration - Looping
- The Loop Statement
- While Loops
- For Loops
- Goto Statements and Labels
Cursors
- Introduction to Cursors
- Cursor Attributes
- Explicit Cursor Declaration
- Explicit Cursor Example
- Declaring Cursor Definitions
- Declaring Cursor Variables
- Opening and Fetching First Row
- Fetching Subsequent Rows
- Exit Conditions (%Notfound)
- Closing Cursors
- For Loop Usage Part I
- For Loop Usage Part II
- Update Examples with Cursors
- FOR UPDATE Clause
- FOR UPDATE OF Clause
- WHERE CURRENT OF Clause
- Managing Commits with Cursors
- Validation Example I
- Validation Example II
- Cursor Parameters
- Workshop Exercise
- Workshop Solution Walkthrough
Procedures, Functions and Packages
- Using the Create Statement
- Defining Parameters
- Procedure Body Structure
- Displaying Errors
- Describing a Procedure
- Invoking Procedures
- Calling Procedures in SQL*Plus
- Utilizing Output Parameters
- Passing Output Parameters
- Creating Functions
- Example Function Implementation
- Error Display in Functions
- Describing a Function
- Invoking Functions
- Calling Functions in SQL*Plus
- Modular Programming Principles
- Example Procedure Code
- Function Invocation Patterns
- Functions within IF Statements
- Creating Packages
- Package Example
- Advantages of Packages
- Public and Private Sub-programs
- Error Handling in Packages
- Describing a Package
- Calling Packages in SQL*Plus
- Invoking Packages from Sub-programs
- Dropping Sub-programs
- Locating Sub-programs
- Creating a Debug Package
- Using the Debug Package
- Positional and Named Notation
- Parameter Default Values
- Recompiling Procedures and Functions
- Practical Workshop
Triggers
- Creating Triggers
- Statement-Level Triggers
- Row-Level Triggers
- WHEN Clauses
- Conditional Triggers (IF)
- Error Reporting in Triggers
- Commit Behaviour in Triggers
- Trigger Restrictions
- Mutating Trigger Issues
- Locating Existing Triggers
- Dropping Triggers
- Generating Auto-numbers
- Disabling Triggers
- Enabling Triggers
- Naming Conventions for Triggers
Sample Data
- ORDER Tables Structure
- FILM Tables Structure
- EMPLOYEE Tables Structure
Dynamic SQL
- Executing SQL within PL/SQL
- Variable Binding
- Dynamic SQL Concepts
- Native Dynamic SQL
- DDL and DML Operations
- Using the DBMS_SQL Package
- Dynamic SELECT Statements
- Dynamic SELECT Procedures
Using Files
- Handling Text Files
- The UTL_FILE Package
- Write and Append Examples
- Reading File Examples
- Trigger-Based File Examples
- DBMS_ALERT Packages
- DBMS_JOB Package
COLLECTIONS
- %Type Variables in Collections
- Record Variables
- Collection Type Overview
- Index-By Tables
- Assigning Values
- Handling Nonexistent Elements
- Nested Tables
- Initializing Nested Tables
- Using Constructors
- Appending to Nested Tables
- Varrays
- Varray Initialization
- Adding Elements to Varrays
- Multilevel Collections
- Bulk Bind Operations
- Bulk Bind Example
- Transactional Considerations
- BULK COLLECT Clause
- RETURNING INTO Clause
Ref Cursors
- Cursor Variables Overview
- Defining REF CURSOR Types
- Declaring Cursor Variables
- Constrained vs. Unconstrained Cursors
- Using Cursor Variables
- Practical Cursor Variable Examples
Requirements
This course is best suited for individuals with a foundational understanding of SQL.
While prior experience with interactive computer systems is advantageous, it is 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.