过程是一个类似于函数的数据库对象。主要区别在于:
过程使用 CREATE PROCEDURE
命令定义,而不是 CREATE FUNCTION
。
过程不返回函数值;因此 CREATE PROCEDURE
缺少 RETURNS
子句。但是,过程可以通过输出参数将其数据返回给调用者。
函数是在查询或 DML 命令中调用,而过程是使用 CALL
命令单独调用。
只要调用的 CALL
命令不是显式事务块的一部分,过程可以在执行期间提交或回滚事务(然后自动开始一个新的事务)。函数不能这样做。
某些函数属性(例如严格性)不适用于过程。这些属性控制函数在查询中的使用方式,这与过程无关。
以下各节中关于如何定义用户定义函数的解释也适用于过程,但上述几点除外。
总的来说,函数和过程也称为例程。诸如 ALTER ROUTINE
和 DROP ROUTINE
之类的命令可以对函数和过程进行操作,而无需知道它是哪种类型。但是,请注意,没有 CREATE ROUTINE
命令。
如果您在文档中看到任何不正确、与您使用特定功能的经验不符或需要进一步澄清的地方,请使用此表单报告文档问题。