Why Procedures?
Creating Simple Procedures
Parameters: Input & Output
Default Parameter Values
Managing Procedures
Functions vs. Procedures
Creating Simple Functions
Function Parameters
Functions in SQL
Managing Functions
What Can Go Wrong?
Basic EXCEPTION Blocks
Handling Specific Errors
User-Defined Exceptions
Propagating & Reraising
What's a Cursor?
Implicit Cursors
Explicit Cursors: Declare
Explicit Cursors: Open
Explicit Cursors: Fetch
Explicit Cursors: Close
Cursor FOR Loops
Parameterized Cursors
FOR UPDATE Cursors
Cursor Variables (REF CURSOR)
Why Use Packages?
Package Specification
Package Body
Using Package Components
Package State & Overloading
What are Triggers?
Triggering Events
Timing is Everything
Row vs. Statement Triggers
Creating Your First Trigger
Old and New Values
Conditional Logic in Triggers
Managing Triggers
Trigger Best Practices
Trigger Use Cases
Why Dynamic SQL?
EXECUTE IMMEDIATE Basics
Dynamic Queries
DBMS_SQL Package
Dynamic SQL Best Practices