跳至主要內容

KlustronDB大约 2 分钟

Chapter 43. PL/pgSQL - SQL Procedural Language

Table of Contents

43.1. Overview : 43.1.1. Advantages of Using PL/pgSQL

[43.1.2. Supported Argument and Result Data Types](plpgsql-overview.md#PLPGSQL-ARGS-RESULTS)

43.2. Structure of PL/pgSQL

43.3. Declarations : 43.3.1. Declaring Function Parameters

[43.3.2. `ALIAS`](plpgsql-declarations.md#PLPGSQL-DECLARATION-ALIAS)

[43.3.3. Copying Types](plpgsql-declarations.md#PLPGSQL-DECLARATION-TYPE)

[43.3.4. Row Types](plpgsql-declarations.md#PLPGSQL-DECLARATION-ROWTYPES)

[43.3.5. Record Types](plpgsql-declarations.md#PLPGSQL-DECLARATION-RECORDS)

[43.3.6. Collation of PL/pgSQL Variables](plpgsql-declarations.md#PLPGSQL-DECLARATION-COLLATION)

43.4. Expressions

43.5. Basic Statements : 43.5.1. Assignment

[43.5.2. Executing a Command With No Result](plpgsql-statements.md#PLPGSQL-STATEMENTS-SQL-NORESULT)

[43.5.3. Executing a Query with a Single-row Result](plpgsql-statements.md#PLPGSQL-STATEMENTS-SQL-ONEROW)

[43.5.4. Executing Dynamic Commands](plpgsql-statements.md#PLPGSQL-STATEMENTS-EXECUTING-DYN)

[43.5.5. Obtaining the Result Status](plpgsql-statements.md#PLPGSQL-STATEMENTS-DIAGNOSTICS)

[43.5.6. Doing Nothing At All](plpgsql-statements.md#PLPGSQL-STATEMENTS-NULL)

43.6. Control Structures : 43.6.1. Returning From a Function

[43.6.2. Returning From a Procedure](plpgsql-control-structures.md#PLPGSQL-STATEMENTS-RETURNING-PROCEDURE)

[43.6.3. Calling a Procedure](plpgsql-control-structures.md#PLPGSQL-STATEMENTS-CALLING-PROCEDURE)

[43.6.4. Conditionals](plpgsql-control-structures.md#PLPGSQL-CONDITIONALS)

[43.6.5. Simple Loops](plpgsql-control-structures.md#PLPGSQL-CONTROL-STRUCTURES-LOOPS)

[43.6.6. Looping Through Query Results](plpgsql-control-structures.md#PLPGSQL-RECORDS-ITERATING)

[43.6.7. Looping Through Arrays](plpgsql-control-structures.md#PLPGSQL-FOREACH-ARRAY)

[43.6.8. Trapping Errors](plpgsql-control-structures.md#PLPGSQL-ERROR-TRAPPING)

[43.6.9. Obtaining Execution Location Information](plpgsql-control-structures.md#PLPGSQL-CALL-STACK)

43.7. Cursors : 43.7.1. Declaring Cursor Variables

[43.7.2. Opening Cursors](plpgsql-cursors.md#PLPGSQL-CURSOR-OPENING)

[43.7.3. Using Cursors](plpgsql-cursors.md#PLPGSQL-CURSOR-USING)

[43.7.4. Looping Through a Cursor's Result](plpgsql-cursors.md#PLPGSQL-CURSOR-FOR-LOOP)

43.8. Transaction Management

43.9. Errors and Messages : 43.9.1. Reporting Errors and Messages

[43.9.2. Checking Assertions](plpgsql-errors-and-messages.md#PLPGSQL-STATEMENTS-ASSERT)

43.10. Trigger Functions : 43.10.1. Triggers on Data Changes

[43.10.2. Triggers on Events](plpgsql-trigger.md#PLPGSQL-EVENT-TRIGGER)

43.11. PL/pgSQL Under the Hood : 43.11.1. Variable Substitution

[43.11.2. Plan Caching](plpgsql-implementation.md#PLPGSQL-PLAN-CACHING)

43.12. Tips for Developing in PL/pgSQL : 43.12.1. Handling of Quotation Marks

[43.12.2. Additional Compile-time Checks](plpgsql-development-tips.md#PLPGSQL-EXTRA-CHECKS)

43.13. Porting from Oracle PL/SQL : 43.13.1. Porting Examples

[43.13.2. Other Things to Watch For](plpgsql-porting.md#PLPGSQL-PORTING-OTHER)

[43.13.3. Appendix](plpgsql-porting.md#PLPGSQL-PORTING-APPENDIX)