Chapter 40. PL/pgSQL - SQL Procedural Language
- Table of Contents
- 40.1. Overview
  - 40.2. Structure of PL/pgSQL
- 40.3. Declarations
  - 40.3.1. Declaring Function Parameters
- 40.3.2. ALIAS
 - 40.3.3. Copying Types
 - 40.3.4. Row Types
 - 40.3.5. Record Types
 - 40.3.6. Collation of PL/pgSQL Variables
  - 40.3.2. ALIAS
 
- 40.3.1. Declaring Function Parameters
 - 40.4. Expressions
- 40.5. Basic Statements
  - 40.5.1. Assignment
- 40.5.2. Executing a Command With No Result
 - 40.5.3. Executing a Query with a Single-row Result
 - 40.5.4. Executing Dynamic Commands
 - 40.5.5. Obtaining the Result Status
 - 40.5.6. Doing Nothing At All
  - 40.5.2. Executing a Command With No Result
 
- 40.5.1. Assignment
 - 40.6. Control Structures
 - 40.6.1. Returning From a Function
- 40.6.2. Conditionals
 - 40.6.3. Simple Loops
 - 40.6.4. Looping Through Query Results
 - 40.6.5. Looping Through Arrays
 - 40.6.6. Trapping Errors
 - 40.6.7. Obtaining Current Execution Information
  - 40.6.2. Conditionals
 
- 40.6.1. Returning From a Function
 - 40.7. Cursors
 - 40.7.1. Declaring Cursor Variables
- 40.7.2. Opening Cursors
 - 40.7.3. Using Cursors
 - 40.7.4. Looping Through a Cursor's Result
  - 40.7.2. Opening Cursors
 
- 40.7.1. Declaring Cursor Variables
 - 40.8. Errors and Messages
- 40.9. Trigger Procedures
  - 40.9.1. Triggers on Data Changes
- 40.9.2. Triggers on Events
  
- 40.9.1. Triggers on Data Changes
 - 40.10. PL/pgSQL Under the Hood
 - 40.10.1. Variable Substitution
- 40.10.2. Plan Caching
  
- 40.10.1. Variable Substitution
 - 40.11. Tips for Developing in PL/pgSQL
 - 40.11.1. Handling of Quotation Marks
- 40.11.2. Additional Compile-time Checks
  
- 40.11.1. Handling of Quotation Marks
 - 40.12. Porting from Oracle PL/SQL
 - 40.12.1. Porting Examples
- 40.12.2. Other Things to Watch For
 - 40.12.3. Appendix
  - 40.12.2. Other Things to Watch For
 
- 40.12.1. Porting Examples