Course Outline
Introduction
- Course Goals and Learning Outcomes
- Schedule Overview
- Participant Introductions
- Entry Requirements
- Roles and Responsibilities
SQL Tooling
- Objectives for the Module
- Overview of SQL Developer
- Establishing Connections in SQL Developer
- Inspecting Table Metadata
- Executing Queries using SQL in SQL Developer
- Logging into SQL*Plus
- Direct Database Connection
- Navigating the SQL*Plus Interface
- Terminating a Session
- Core SQL*Plus Commands
- The SQL*Plus Environment
- Understanding the SQL*Plus Prompt
- Retrieving Table Information
- Accessing Help Documentation
- Executing SQL Script Files
- iSQL*Plus and Entity Modeling
- The ORDERS Dataset
- The FILM Dataset
- Course Materials Reference
- SQL Syntax Standards
- Advanced SQL*Plus Commands
Understanding PL/SQL
- Definition of PL/SQL
- Benefits of Using PL/SQL
- Code Block Architecture
- Outputting Messages
- Code Examples
- Configuring SERVEROUTPUT
- Update Demonstrations and Style Conventions
Variables
- Variable Concepts
- Data Types
- Initializing Variables
- Constants
- Scope: Local vs. Global
- Using %Type Variables
- Substitution Variables
- Adding Comments with &
- The Verify Option
- Managing && Variables
- Defining and Undefining Variables
The SELECT Statement
- Syntax and Usage
- Assigning Values to Variables
- Using %Rowtype Variables
- The CHR Function
- Independent Practice
- Defining PL/SQL Records
- Declaration Examples
Conditional Logic
- The IF Structure
- Integration with SELECT
- Independent Practice
- The CASE Structure
Error Handling
- Understanding Exceptions
- System-Defined Errors
- Retrieving Error Codes and Messages
- Handling NO_DATA_FOUND
- Raising Custom Exceptions
- Raising Application Errors
- Catching Undefined Exceptions
- Using PRAGMA EXCEPTION_INIT
- Transaction Control: Commit and Rollback
- Independent Practice
- Nested Code Blocks
- Practical Workshop
Iteration and Loops
- Basic Loop Statements
- While Loops
- For Loops
- Goto Statements and Labels
Cursors
- Cursor Concepts
- Accessing Cursor Attributes
- Explicit Cursor Management
- Demonstrations of Explicit Cursors
- Cursor Declaration
- Variable Declaration
- Opening and Fetching the First Row
- Fetching Subsequent Rows
- Exit Conditions with %Notfound
- Closing the Cursor
- For Loop Applications Part I
- For Loop Applications Part II
- Data Update Demonstrations
- Using FOR UPDATE
- Specifying Columns with FOR UPDATE OF
- Targeting Rows with WHERE CURRENT OF
- Committing Changes with Cursors
- Validation Scenarios Part I
- Validation Scenarios Part II
- Passing Parameters to Cursors
- Practical Workshop
- Workshop Solutions
Procedures, Functions, and Packages
- The CREATE Statement
- Managing Parameters
- Writing the Procedure Body
- Error Reporting
- Viewing Procedure Details
- Invoking Procedures
- Executing Procedures via SQL*Plus
- Utilizing OUT Parameters
- Calling with OUT Parameters
- Developing Functions
- Function Examples
- Error Reporting
- Viewing Function Details
- Invoking Functions
- Executing Functions via SQL*Plus
- Principles of Modular Programming
- Procedure Examples
- Function Invocation
- Using Functions Within IF Structures
- Constructing Packages
- Package Case Studies
- Advantages of Packages
- Public and Private Sub-programs
- Error Reporting
- Viewing Package Details
- Calling Packages from SQL*Plus
- Invoking Packages from Sub-programs
- Removing Sub-programs
- Locating Sub-programs
- Building a Debugging Package
- Using the Debugging Package
- Positional and Named Parameter Notation
- Default Parameter Values
- Recompiling Procedures and Functions
- Practical Workshop
Triggers
- Creating Triggers
- Statement-Level Triggers
- Row-Level Triggers
- Applying WHEN Conditions
- Conditional Triggers using IF
- Error Reporting
- Commit Behavior in Triggers
- Usage Restrictions
- Mutating Table Triggers
- Identifying Triggers
- Dropping Triggers
- Auto-Numbering Generation
- Disabling Triggers
- Enabling Triggers
- Naming Conventions for Triggers
Sample Data
- ORDER Dataset
- FILM Dataset
- EMPLOYEE Dataset
Dynamic SQL
- Executing SQL within PL/SQL
- Binding Techniques
- Dynamic SQL Concepts
- Native Dynamic SQL
- Handling DDL and DML
- The DBMS_SQL Package
- Dynamic SELECT Statements
- Dynamic SELECT Procedures
File Operations
- Working with Text Files
- The UTL_FILE Package
- Write and Append Demonstrations
- Read Demonstrations
- Trigger-Based File Examples
- DBMS_ALERT Packages
- DBMS_JOB Packages
Collections
- %Type Variable Usage
- Record Variables
- Collection Data Types
- Index-By Tables
- Assigning Values
- Handling Missing Elements
- Nested Tables
- Initializing Nested Tables
- Using the Constructor
- Adding Elements to Nested Tables
- VARRAYs
- Initializing VARRAYs
- Appending to VARRAYs
- Multi-Level Collections
- Bulk Binding Techniques
- Bulk Binding Examples
- Transaction Considerations
- The BULK COLLECT Clause
- RETURNING INTO Clauses
Ref Cursors
- Cursor Variables
- Defining REF CURSOR Types
- Declaring Cursor Variables
- Constrained vs. Unconstrained Cursors
- Utilizing Cursor Variables
- Cursor Variable Case Studies
Requirements
This course is designed for individuals with a foundational understanding of SQL.
Prior experience operating an interactive computer system is recommended but not mandatory.
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.