PostgreSQL 9.6.9 Documentation
Prev | Up |  | Next

# Chapter 41. PL/pgSQL - SQL Procedural Language

Table of Contents
41.1. Overview
  41.1.1. Advantages of Using PL/pgSQL
  41.1.2. Supported Argument and Result Data Types
41.2. Structure of PL/pgSQL
41.3. Declarations
  41.3.1. Declaring Function Parameters
  41.3.2. `ALIAS`
  41.3.3. Copying Types
  41.3.4. Row Types
  41.3.5. Record Types
  41.3.6. Collation of PL/pgSQL Variables
41.4. Expressions
41.5. Basic Statements
  41.5.1. Assignment
  41.5.2. Executing a Command With No Result
  41.5.3. Executing a Query with a Single-row Result
  41.5.4. Executing Dynamic Commands
  41.5.5. Obtaining the Result Status
  41.5.6. Doing Nothing At All
41.6. Control Structures
  41.6.1. Returning From a Function
  41.6.2. Conditionals
  41.6.3. Simple Loops
  41.6.4. Looping Through Query Results
  41.6.5. Looping Through Arrays
  41.6.6. Trapping Errors
  41.6.7. Obtaining Execution Location Information
41.7. Cursors
  41.7.1. Declaring Cursor Variables
  41.7.2. Opening Cursors
  41.7.3. Using Cursors
  41.7.4. Looping Through a Cursor's Result
41.8. Errors and Messages
  41.8.1. Reporting Errors and Messages
  41.8.2. Checking Assertions
41.9. Trigger Procedures
  41.9.1. Triggers on Data Changes
  41.9.2. Triggers on Events
41.10. PL/pgSQL Under the Hood
  41.10.1. Variable Substitution
  41.10.2. Plan Caching
41.11. Tips for Developing in PL/pgSQL
  41.11.1. Handling of Quotation Marks
  41.11.2. Additional Compile-time Checks
41.12. Porting from Oracle PL/SQL
  41.12.1. Porting Examples
  41.12.2. Other Things to Watch For
  41.12.3. Appendix

Prev | Home | Next
Installing Procedural Languages | Up | Overview