Course Outline
Introduction
- Course Aims and Objectives
- Schedule Overview
- Participant Introductions
- Required Prerequisites
- Participant Responsibilities
SQL Tools
- Learning Objectives
- Introducing SQL Developer
- Establishing Connections in SQL Developer
- Reviewing Table Information
- Executing Queries via SQL and SQL Developer
- Logging into SQL*Plus
- Setting Up Direct Connections
- Navigating SQL*Plus
- Terminating Sessions
- Common SQL*Plus Commands
- The SQL*Plus Environment
- Prompts in SQL*Plus
- Retrieving Table Details
- Accessing Help Resources
- Utilizing SQL Scripts
- iSQL*Plus and Entity Models
- The ORDERS Data Set
- The FILM Data Set
- Course Reference Tables
- SQL Statement Syntax
- Essential SQL*Plus Commands
Understanding PL/SQL
- Overview of PL/SQL
- Benefits of Using PL/SQL
- Block Architecture
- Outputting Messages
- Sample Code Snippets
- Configuring SERVEROUTPUT
- Update Example and Style Guidelines
Variables
- Variable Concepts
- Data Types
- Assigning Values to Variables
- Defining Constants
- Local vs. Global Variables
- Using %Type Variables
- Substitution Variables
- Inserting Comments with &
- The Verify Option
- Managing && Variables
- Defining and Undefining Variables
The SELECT Statement
- Using the SELECT Statement
- Populating Variables from Queries
- Using %Rowtype Variables
- The CHR Function
- Independent Study
- PL/SQL Records
- Declaration Examples
Conditional Logic
- Implementing IF Statements
- SELECT Statement Integration
- Independent Study
- Using Case Statements
Error Handling
- Exception Concepts
- Internal Errors
- Error Codes and Messages
- Handling No Data Found Scenarios
- Defining User Exceptions
- Raising Application Errors
- Catching Undefined Errors
- Using PRAGMA EXCEPTION_INIT
- Managing Commit and Rollback
- Independent Study
- Nested Blocks
- Practical Workshop
Iteration and Looping
- Basic Loop Statement
- While Loops
- For Loops
- Goto Statements and Labels
Cursors
- Introduction to Cursors
- Cursor Attributes
- Explicit Cursors
- Example: Explicit Cursor Implementation
- Declaring Cursors
- Declaring Variables
- Opening Cursors and Fetching the First Row
- Fetching Subsequent Rows
- Exit Conditions Using %Notfound
- Closing Cursors
- For Loop Implementation I
- For Loop Implementation II
- Update Example
- Using FOR UPDATE
- Using FOR UPDATE OF
- 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
- Handling Parameters
- Constructing Procedure Bodies
- Displaying Error Information
- Describing Procedures
- Invoking Procedures
- Calling Procedures via SQL*Plus
- Utilizing Output Parameters
- Calling Procedures with Output
- Creating Functions
- Example Function
- Displaying Error Information
- Describing Functions
- Invoking Functions
- Calling Functions via SQL*Plus
- Modular Programming Concepts
- Example Procedure
- Calling Functions
- Using Functions Within IF Statements
- Creating Packages
- Package Example
- Advantages of Packages
- Public vs. Private Sub-programs
- Displaying Error Information
- Describing Packages
- Calling Packages via SQL*Plus
- Calling Packages from Sub-programs
- Dropping Sub-programs
- Locating Sub-programs
- Creating a Debug Package
- Invoking the Debug Package
- Positional and Named Notation
- Default Parameter Values
- Recompiling Procedures and Functions
- Practical Workshop
Triggers
- Creating Triggers
- Statement-Level Triggers
- Row-Level Triggers
- Using WHEN Restrictions
- Selective Triggers with IF
- Displaying Error Information
- Committing in Triggers
- Trigger Restrictions
- Mutating Trigger Issues
- Locating Triggers
- Dropping Triggers
- Generating Auto-numbering
- Disabling Triggers
- Enabling Triggers
- Naming Conventions for Triggers
Sample Data
- ORDER Tables
- FILM Tables
- EMPLOYEE Tables
Dynamic SQL
- SQL within PL/SQL
- Binding Variables
- Dynamic SQL Concepts
- Native Dynamic SQL
- DDL and DML Operations
- The DBMS_SQL Package
- Dynamic SQL for SELECT Statements
- Dynamic SQL SELECT Procedures
File Operations
- Handling Text Files
- The UTL_FILE Package
- Write and Append Examples
- Reading Examples
- Trigger-Based File Examples
- The DBMS_ALERT Package
- The DBMS_JOB Package
Collections
- %Type Variables
- Record Variables
- Collection Types
- Index-By Tables
- Assigning Values
- Managing Nonexistent Elements
- Nested Tables
- Initializing Nested Tables
- Using the Constructor
- Adding Elements to Nested Tables
- Varrays
- Initializing Varrays
- Adding Elements to Varrays
- Multilevel Collections
- Bulk Binding
- Bulk Binding Example
- Transactional Considerations
- The BULK COLLECT Clause
- RETURNING INTO Clause
Ref Cursors
- Cursor Variables
- Defining REF CURSOR Types
- Declaring Cursor Variables
- Constrained vs. Unconstrained Types
- Using Cursor Variables
- Cursor Variable Examples
Requirements
Participants should possess foundational knowledge of SQL to fully benefit from this course.
While prior experience with interactive computer systems is advantageous, it is not a strict requirement.
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.