MySQL中procedures 与 functions的区别

procedures 和 functions之间的最大的不同是:不同的触发方法 和 不同的使用需求(或是目地)。

¨Procedures没有返回值。使用CALL调用procedures,以执行修改表或是处理检索到的记录。

¨Function有返回值。在一个表达式中触发,该值会返回到调用它的表达式中。更确切的说,一个function在表达式中的用法,其当于一个常量,一个内置的function,或是一个指向表列的引用。

procedures 和 functions 的创建语法亦有不同之处:
procedures 的参数可以定义为input-only,output-only,或是input and output。这就意味着procedures可以通过output 参数将值传送到外面。这些值可以在CALL语句后面的statememts被访问或是使用。

function只有input参数。于是,虽然procedures 和 functions都有相同的参数,但是procedures 参数的声明,还是与function有着不同。

在functions 中有返回值,所以在function definition中必须要有一个REUTRNS来指示返回值的数据类型。同时,在function body中必须至少要有一个RETURN来将值返回给调用者。

在procedure definition中不会有RETURNS和RETURN。