September 4, 2025: PostgreSQL 18 RC 1 Released!
DocumentationPostgreSQL devel (2025年09月20日 21:25:11 - git commit e1d917182c1)
Supported Versions: Current (17) / 16 / 15 / 14 / 13
Development Versions: 18 / devel
Unsupported versions: 12 / 11
This documentation is for an unsupported version of PostgreSQL.
You may want to view the same page for the current version, or one of the other supported versions listed above instead.
36.4. User-Defined Procedures
Prev Up Chapter 36. Extending SQL Home Next

36.4. User-Defined Procedures #

A procedure is a database object similar to a function. The key differences are:

  • Procedures are defined with the CREATE PROCEDURE command, not CREATE FUNCTION.

  • Procedures do not return a function value; hence CREATE PROCEDURE lacks a RETURNS clause. However, procedures can instead return data to their callers via output parameters.

  • While a function is called as part of a query or DML command, a procedure is called in isolation using the CALL command.

  • A procedure can commit or roll back transactions during its execution (then automatically beginning a new transaction), so long as the invoking CALL command is not part of an explicit transaction block. A function cannot do that.

  • Certain function attributes, such as strictness, don't apply to procedures. Those attributes control how the function is used in a query, which isn't relevant to procedures.

The explanations in the following sections about how to define user-defined functions apply to procedures as well, except for the points made above.

Collectively, functions and procedures are also known as routines. There are commands such as ALTER ROUTINE and DROP ROUTINE that can operate on functions and procedures without having to know which kind it is. Note, however, that there is no CREATE ROUTINE command.


Prev Up Next
36.3. User-Defined Functions Home 36.5. Query Language (SQL) Functions

AltStyle によって変換されたページ (->オリジナル) /