Course Outline
Introduction
- Goals and Learning Outcomes
- Course Timeline
- Meet and Greet
- Entry Requirements
- Roles and Duties
SQL Utilities
- Objectives
- SQL Developer
- Connecting via SQL Developer
- Inspecting Table Metadata
- Executing Queries in SQL Developer
- Logging into SQL*Plus
- Establishing Direct Connections
- Using SQL*Plus
- Terminating the Session
- SQL*Plus Commands
- SQL*Plus Environment Setup
- SQL*Plus Prompts
- Retrieving Table Details
- Accessing Help Resources
- Executing SQL Scripts
- iSQL*Plus and Entity Models
- The ORDERS Tables
- The FILM Tables
- Course Tables Reference Guide
- SQL Statement Structure
- SQL*Plus Commands
Understanding PL/SQL
- Overview of PL/SQL
- Benefits of Using PL/SQL
- Block Architecture
- Message Output
- Code Samples
- Configuring SERVEROUTPUT
- Update Example and Coding Standards
Variables
- Variable Usage
- Data Types
- Assigning Variables
- Constants
- Local vs. Global Variables
- %Type Variables
- Substitution Variables
- Comments using &
- Verification Options
- && Variables
- Defining and Clearing Variables
SELECT Statements
- The SELECT Command
- Populating Variables with Data
- %Rowtype Variables
- The CHR Function
- Independent Practice
- PL/SQL Records
- Declaration Examples
Conditional Logic
- IF Statements
- SELECT Statements in Logic
- Independent Practice
- Case Statements
Error Handling
- Exceptions
- System-Generated Errors
- Error Codes and Messages
- Handling No Data Found
- Custom Exceptions
- Raising Application Errors
- Catching Undefined Errors
- Using PRAGMA EXCEPTION_INIT
- Commit and Rollback Strategies
- Independent Practice
- Nested Blocks
- Workshop Activity
Iteration and Loops
- Basic Loop Statements
- While Loops
- For Loops
- Goto Statements and Labels
Cursors
- Introduction to Cursors
- Cursor Attributes
- Explicit Cursors
- Explicit Cursor Demonstrations
- Cursor Declaration
- Variable Declaration
- Opening and Fetching the First Row
- Fetching Subsequent Rows
- Exit Conditions (%Notfound)
- Closing Cursors
- For Loop I
- For Loop II
- Update Example
- FOR UPDATE Clause
- FOR UPDATE OF Clause
- WHERE CURRENT OF Clause
- Committing Changes with Cursors
- Validation Example I
- Validation Example II
- Cursor Parameters
- Workshop Activity
- Workshop Solutions
Procedures, Functions, and Packages
- The CREATE Statement
- Parameter Handling
- Procedure Body Structure
- Identifying Errors
- Describing Procedures
- Invoking Procedures
- Calling Procedures in SQL*Plus
- Output Parameters
- Invoking with Output Parameters
- Defining Functions
- Function Examples
- Identifying Errors
- Describing Functions
- Invoking Functions
- Calling Functions in SQL*Plus
- Modular Programming Principles
- Procedure Examples
- Function Invocation
- Using Functions in IF Statements
- Creating Packages
- Package Examples
- Advantages of Packages
- Public vs. Private Sub-programs
- Identifying Errors
- Describing Packages
- Calling Packages in SQL*Plus
- Invoking Packages from Sub-programs
- Removing Sub-programs
- Locating Sub-programs
- Building a Debug Package
- Using the Debug Package
- Positional and Named Notation
- Default Parameter Values
- Recompiling Procedures and Functions
- Workshop Activity
Triggers
- Building Triggers
- Statement-Level Triggers
- Row-Level Triggers
- WHEN Conditions
- Conditional Triggers - IF
- Identifying Errors
- Commits within Triggers
- Trigger Limitations
- Mutating Trigger Issues
- Locating Triggers
- Removing Triggers
- Auto-numbering Generation
- Disabling Triggers
- Enabling Triggers
- Naming Conventions for Triggers
Sample Data
- ORDER Tables
- FILM Tables
- EMPLOYEE Tables
Dynamic SQL
- SQL Integration in PL/SQL
- Binding Variables
- Dynamic SQL Concepts
- Native Dynamic SQL
- DDL and DML Operations
- DBMS_SQL Package
- Dynamic SELECT Statements
- Dynamic SELECT Procedures
File Operations
- Working with Text Files
- UTL_FILE Package
- Write/Append Examples
- Read Examples
- Trigger Integration Example
- DBMS_ALERT Packages
- DBMS_JOB Package
COLLECTIONS
- %Type Variables
- Record Variables
- Collection Data Types
- Index-By Tables
- Assigning Values
- Handling Missing Elements
- Nested Tables
- Nested Table Initialization
- Using Constructors
- Adding to Nested Tables
- Varrays
- Varray Initialization
- Adding Elements to Varrays
- Multilevel Collections
- Bulk Binding
- Bulk Binding Examples
- Transactional Considerations
- BULK COLLECT Clause
- RETURNING INTO Clause
Ref Cursors
- Cursor Variables
- Defining REF CURSOR Types
- Declaring Cursor Variables
- Constrained vs. Unconstrained Types
- Utilizing Cursor Variables
- Cursor Variable Examples
Requirements
Participants should possess a basic understanding of SQL.
Prior experience with interactive computer systems 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.