2024 年 9 月 26 日: PostgreSQL 17 发布!
支持的版本:当前 (17) / 16 / 15 / 14 / 13 / 12
开发版本:devel
不支持的版本:11

36.4. 用户定义过程 #

过程是类似于函数的数据库对象。主要区别在于

  • 过程使用 CREATE PROCEDURE 命令定义,而不是 CREATE FUNCTION

  • 过程不返回值;因此 CREATE PROCEDURE 缺少 RETURNS 子句。但是,过程可以通过输出参数将数据返回给调用者。

  • 函数作为查询或 DML 命令的一部分被调用,而过程使用 CALL 命令独立调用。

  • 过程可以在执行期间提交或回滚事务(然后自动开始新的事务),只要调用的 CALL 命令不是显式事务块的一部分。函数不能这样做。

  • 某些函数属性,例如严格性,不适用于过程。这些属性控制函数在查询中的使用方式,这与过程无关。

以下部分关于如何定义用户定义函数的说明也适用于过程,除了上面提到的几点。

函数和过程统称为 例程。有一些命令,例如 ALTER ROUTINEDROP ROUTINE,可以对函数和过程进行操作,而无需知道它是哪种类型。但是请注意,没有 CREATE ROUTINE 命令。

提交更正

如果您在文档中发现任何不正确的内容,与您对特定功能的体验不符,或者需要进一步澄清,请使用 此表格 报告文档问题。