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