Course Outline
Introduction
- Course Goals and Objectives
- Itinerary
- Participant Introductions
- Prerequisites
- Roles and Responsibilities
SQL Tools
- Learning Objectives
- SQL Developer
- SQL Developer - Connection Setup
- Inspecting Table Data
- Querying with SQL in SQL Developer
- Logging In with SQL*Plus
- Establishing Direct Connections
- Using the SQL*Plus Interface
- Terminating a Session
- SQL*Plus Command Reference
- The SQL*Plus Environment
- The SQL*Plus Prompt
- Retrieving Table Metadata
- Accessing Help Resources
- Executing SQL Scripts
- iSQL*Plus and Entity Models
- Review of ORDERS Tables
- Review of FILM Tables
- Distribution of Course Table Documentation
- Syntax of SQL Statements
- Overview of SQL*Plus Commands
Understanding PL/SQL
- Definition of PL/SQL
- Benefits of Using PL/SQL
- Code Block Structure
- Outputting Messages
- Code Samples
- Configuring SERVEROUTPUT
- Update Demonstration and Coding Style
Variables
- Variable Management
- Data Types
- Variable Assignment
- Constant Definitions
- Local vs. Global Scope
- %Type Variable Usage
- Substitution Variables
- Commenting with &
- The Verify Option
- && Variable Handling
- Define and Undefine Commands
SELECT Statement
- Overview of the SELECT Statement
- Populating Variables from Queries
- %Rowtype Variable Usage
- The CHR Function
- Independent Study Activities
- PL/SQL Record Types
- Sample Declarations
Conditional Logic
- The IF Statement
- Conditional SELECT Statements
- Independent Study Activities
- The Case Statement
Error Handling
- Exception Handling Basics
- Internal System Errors
- Error Codes and Messages
- Handling No Data Found
- Custom User Exceptions
- Raising Application Errors
- Catching Undefined Errors
- Using PRAGMA EXCEPTION_INIT
- Transaction Control: Commit and Rollback
- Independent Study Activities
- Nested Code Blocks
- Practical Workshop
Looping Constructs
- The Basic Loop Statement
- The While Loop
- The For Loop
- Goto Statements and Labels
Cursors
- Introduction to Cursors
- Cursor Attributes
- Explicit Cursor Usage
- Example: Explicit Cursor
- Cursor Declaration
- Variable Declaration for Cursors
- Opening a Cursor and Fetching the First Row
- Fetching Subsequent Rows
- Extraction Based on %Notfound
- Closing a Cursor
- For Loop Implementation I
- For Loop Implementation II
- Update Demonstration
- FOR UPDATE Clause
- FOR UPDATE OF Clause
- WHERE CURRENT OF Clause
- Committing Changes with Cursors
- Validation Example I
- Validation Example II
- Cursor Parameters
- Practical Workshop
- Workshop Solutions
Procedures, Functions, and Packages
- The CREATE Statement
- Parameter Handling
- Procedure Structure
- Error Visualization
- Describing a Procedure
- Invoking Procedures
- Calling Procedures via SQL*Plus
- Utilizing Output Parameters
- Passing Output Parameters
- Function Creation
- Function Example
- Error Visualization
- Describing a Function
- Invoking Functions
- Calling Functions via SQL*Plus
- Modular Development Practices
- Procedure Example
- Function Invocation
- Using Functions in IF Statements
- Package Creation
- Package Example
- Advantages of Using Packages
- Public vs. Private Subprograms
- Error Visualization
- Describing a Package
- Calling Packages via SQL*Plus
- Invoking Packages from Other Subprograms
- Removing Subprograms
- Locating Subprograms
- Creating a Debug Package
- Using the Debug Package
- Positional and Named Parameter Notation
- Default Parameter Values
- Recompiling Procedures and Functions
- Practical Workshop
Triggers
- Trigger Creation
- Statement-Level Triggers
- Row-Level Triggers
- The WHEN Condition
- Conditional Triggers using IF
- Error Visualization
- Commit Behavior in Triggers
- System Restrictions
- Mutating Triggers
- Identifying Triggers
- Removing a Trigger
- Generating Auto-Numbering
- Disabling Triggers
- Enabling Triggers
- Naming Conventions for Triggers
Sample Data
- ORDER Table Structure
- FILM Table Structure
- EMPLOYEE Table Structure
Dynamic SQL
- Executing SQL within PL/SQL
- Variable Binding
- Dynamic SQL Execution
- Native Dynamic SQL
- DDL and DML Statements
- The DBMS_SQL Package
- Dynamic SELECT Statements
- Dynamic SELECT Procedures
File Operations
- Text File Manipulation
- The UTL_FILE Package
- Write and Append Demonstration
- Read Demonstration
- Trigger-Based File Example
- The DBMS_ALERT Package
- The DBMS_JOB Package
COLLECTIONS
- %Type Variable Usage
- Record Variable Usage
- Collection Data Types
- Index-By Tables
- Assigning Values to Collections
- Handling Nonexistent Elements
- Nested Tables
- Nested Table Initialization
- Using Constructor Functions
- Adding Items to Nested Tables
- Varrays
- Varray Initialization
- Appending to Varrays
- Multi-Level Collections
- Bulk Binding Operations
- Bulk Binding Example
- Transactional Considerations
- The BULK COLLECT Clause
- RETURNING INTO Clause
Ref Cursors
- Cursor Variable Concepts
- Defining REF CURSOR Types
- Declaring Cursor Variables
- Constrained vs. Unconstrained Cursors
- Utilizing Cursor Variables
- Practical Cursor Variable Examples
Requirements
Basic proficiency in SQL is recommended for this course.
Prior experience with interactive computer systems is advantageous 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.