MySQL 函数和过程之间最显着的区别是什么?
短信预约 -IT技能 免费直播动态提醒
过程和函数之间最显着的区别是它们的调用方式不同并且出于不同的目的。除此之外,以下是过程和函数之间的区别 -
过程不返回值。相反,它是使用 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 不会出现在过程定义中。
li>
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341