MySQL函数和过程之间最显着的区别是什么?
过程和功能之间最显着的区别是,它们以不同的方式调用且出于不同的目的。除了以下内容,还有过程和功能之间的区别-
过程不返回值。而是使用CALL语句调用它来执行诸如修改表或处理检索到的记录之类的操作。
另一方面,在表达式中调用一个函数,然后将单个值直接返回给要在表达式中使用的调用方。也就是说,在表达式中使用函数的方式与常量,内置函数或对表列的引用相同。
我们不能使用CALL语句调用函数。我们不能在表达式中调用过程。
例程创建的语法与过程和函数有些不同,如下所示-
CREATE[DEFINER = { user | CURRENT_USER }]
PROCEDURE sp_name ([proc_parameter[,...]])
[characteristic ...] routine_body
CREATE
[DEFINER = { user | CURRENT_USER }]
FUNCTION sp_name ([func_parameter[,...]])
RETURNS type
[characteristic ...] routine_body
proc_parameter:
[ IN | OUT | INOUT ] param_name type
func_parameter:
param_name type
type:
Any valid MySQL data type
characteristic:
COMMENT 'string'
| LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
routine_body:
Valid SQL routine statement
可以将过程参数定义为“仅输入”,“仅输出”或输入和输出两者。这意味着过程可以使用输出参数将值传递回调用方。可以在CALL语句之后的语句中访问这些值。
另一方面,功能仅具有输入参数。结果,尽管过程和函数都可以具有参数,但是过程参数声明语法与函数的语法不同。
函数返回一个值,因此函数定义中必须有一个RETURNS子句,以指示返回值的数据类型。另外,函数体内必须至少有一个RETURN语句才能将值返回给调用方。
另一方面,RETURNS和RETURN不会出现在过程定义中。
以上是 MySQL函数和过程之间最显着的区别是什么? 的全部内容, 来源链接: utcz.com/z/321662.html