Course Outline
Overview
- Learning Goals and Objectives
- Course Itinerary
- Participant Introductions
- Prerequisite Requirements
- Participant and Instructor Responsibilities
SQL Utilities
- Learning Objectives
- SQL Developer
- Establishing a Connection in SQL Developer
- Reviewing Table Information
- Executing Queries using SQL Developer
- Logging in to SQL*Plus
- Establishing a Direct Connection
- Navigating SQL*Plus
- Terminating the Session
- SQL*Plus Command Syntax
- SQL*Plus Environment Setup
- Understanding the SQL*Plus Prompt
- Retrieving Table Metadata
- Accessing Help Resources
- Running SQL Scripts
- iSQL*Plus and Entity Models
- ORDERS Table Structure
- FILM Table Structure
- Course Reference Tables
- SQL Syntax Standards
- SQL*Plus Command Recap
Introduction to PL/SQL
- Definition of PL/SQL
- Benefits of Using PL/SQL
- Block Architecture
- Outputting Messages
- Code Samples
- Configuring SERVEROUTPUT
- Update Examples and Coding Style Guidelines
Variables
- Variable Concepts
- Data Types
- Assigning Values to Variables
- Defining Constants
- Scope: Local vs Global Variables
- %Type Variables
- Substitution Variables
- Adding Comments using &
- The Verify Option
- && Variables
- Define and Undefine Commands
SELECT Statements
- Using the SELECT Statement
- Populating Variables from Queries
- %Rowtype Variables
- The CHR Function
- Independent Practice
- PL/SQL Records
- Record Declaration Examples
Conditional Logic
- IF Statements
- Conditional SELECT Statements
- Independent Practice
- CASE Statements
Error Handling
- Exception Handling Basics
- Managing Internal Errors
- Retrieving Error Codes and Messages
- Handling No Data Found
- Raising User-Defined Exceptions
- Raise Application Error
- Catching Undefined Errors
- Using PRAGMA EXCEPTION_INIT
- Transaction Control: Commit and Rollback
- Independent Practice
- Nested Exception Blocks
- Practical Workshop
Iteration and Loops
- Basic Loop Statement
- While Loops
- For Loops
- Goto Statements and Labels
Cursors
- Cursor Overview
- Cursor Attributes
- Explicit Cursors
- Explicit Cursor Examples
- Declaring a Cursor
- Declaring the Variable
- Opening the Cursor and Fetching the First Row
- Fetching Subsequent Rows
- Termination Condition: Exit When %Notfound
- Closing the Cursor
- For Loop Integration I
- For Loop Integration II
- Update Scenarios
- FOR UPDATE Clause
- FOR UPDATE OF Clause
- WHERE CURRENT OF Clause
- Committing Changes within Cursor Operations
- Data Validation Example I
- Data Validation Example II
- Passing Cursor Parameters
- Practical Workshop
- Workshop Solutions
Procedures, Functions, and Packages
- The Create Statement
- Parameter Management
- Procedure Logic
- Displaying Compilation Errors
- Inspecting Procedure Details
- Executing Procedures
- Running Procedures via SQL*Plus
- Utilizing Output Parameters
- Handling Output Parameters in Calls
- Function Creation
- Function Examples
- Displaying Function Errors
- Inspecting Function Details
- Invoking Functions
- Running Functions via SQL*Plus
- Principles of Modular Programming
- Procedure Examples
- Function Integration
- Using Functions within IF Conditions
- Package Creation
- Package Examples
- Advantages of Packages
- Public vs Private Sub-programs
- Displaying Package Errors
- Inspecting Package Details
- Invoking Packages via SQL*Plus
- Calling Packages from Other Sub-programs
- Removing Sub-programs
- Locating Existing Sub-programs
- Creating Debugging Packages
- Using the Debug Package
- Positional vs Named Notation
- Setting Default Parameter Values
- Recompiling Procedures and Functions
- Practical Workshop
Triggers
- Trigger Creation
- Statement-Level Triggers
- Row-Level Triggers
- Applying WHEN Conditions
- Conditional Triggers using IF
- Displaying Trigger Errors
- Transaction Control in Triggers
- Trigger Limitations
- Mutating Trigger Issues
- Identifying Triggers
- Removing Triggers
- Automatic Number Generation
- Disabling Triggers
- Enabling Triggers
- Naming Conventions for Triggers
Sample Datasets
- ORDER Tables
- FILM Tables
- EMPLOYEE Tables
Dynamic SQL
- Embedding SQL in PL/SQL
- Binding Variables
- Dynamic SQL Concepts
- Native Dynamic SQL
- Executing DDL and DML Dynamically
- The DBMS_SQL Package
- Dynamic SELECT Statements
- Dynamic SELECT Procedures
File Handling
- Working with Text Files
- The UTL_FILE Package
- Write and Append Operations
- Read Operations
- 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 Collection Values
- Handling Missing Elements
- Nested Tables
- Initializing Nested Tables
- Using the Constructor
- Inserting Elements into Nested Tables
- Varrays
- Initializing Varrays
- Adding Elements to Varrays
- Multilevel Collection Structures
- Bulk Binding
- Bulk Bind Examples
- Transaction Considerations
- The BULK COLLECT Clause
- Using RETURNING INTO
Ref Cursors
- Cursor Variables Overview
- Defining REF CURSOR Types
- Declaring Cursor Variables
- Constrained vs Unconstrained Cursors
- Utilizing Cursor Variables
- Practical Cursor Variable Examples
Requirements
Participants should possess a basic understanding of SQL principles.
Prior experience with interactive computing systems is beneficial but 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.