受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发版本: devel

36.4. 用户定义的过程 #

过程是一个类似于函数的数据库对象。 关键差异是:

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

  • 过程不返回函数值;因此CREATE PROCEDURE 缺少 RETURNS 子句。 不过,过程可以通过输出参数向调用方返回数据。

  • 函数可以作为查询或 DML 命令的一部分被调用,而过程则通过CALL命令单独调用。

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

  • 某些函数属性(例如严格性)不适用于过程。 这些属性控制如何在查询中使用函数,与过程不相关。

后面章节中关于如何定义用户定义的函数的解释同样适用于过程,除了上面指出的那些点。

函数和过程一起构成了例程。 有ALTER ROUTINEDROP ROUTINE这样的命令可以操作函数和过程而不需要知道它们是哪一种。 不过,要注意没有CREATE ROUTINE命令。

提交更正

如果您发现文档中有不正确的内容、与您使用特定功能的经验不符或需要进一步说明,请使用此表单来报告文档问题。