过程是一个类似于函数的数据库对象。 关键差异是:
过程是由 CREATE
PROCEDURE 命令定义,而不是 CREATE
FUNCTION。
过程不返回函数值;因此 CREATE
PROCEDURE 缺少 RETURNS 子句。
然而,过程可以通过输出参数返回数据到它们的调用者。
当函数可以作为查询或 DML 命令的一部分调用时,过程用
CALL 命令孤立地调用。
在执行期间,过程可以提交或回滚事务(然后自动开始一个新事务),只要调用
CALL 命令不是显式事务块的一部分。函数做不了这个。
某些函数属性,例如严格性,不适用于过程。 这些属性控制如何在查询中使用函数,与过程无关。
后面章节中关于如何定义用户定义的函数的解释同样适用于过程,除了上面指出的那些点。
函数和过程一起被称为 例程。
有 ALTER ROUTINE 和 DROP ROUTINE 这样的命令可以操作函数和
过程而不需要知道它们是哪一种。 不过,要注意没有 CREATE ROUTINE 命令。