Function VS Procedure

本文详细阐述了数据库中函数与存储过程的主要区别:函数总是返回一个值,而存储过程可以返回多个值;函数只能拥有输入参数,而存储过程可以拥有输入、输出及输入输出参数;函数主要用于计算场景,而存储过程则用于执行业务逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Functions are typically used to return table variables. Stored    procedures cant return table variables however, can create tables.            
A procedure may or may not return multiple values. A function    cannot return more than one value and has to return at least one   value.
A function can only have IN parameters while stored   procedures can have IN, OUT and INOUT parameters

 

A FUNCTION always returns a value using the  return statement while a PROCEDURE may return one or more values   through parameters or may not return at all.
Functions can be  used in select or update or delete statement while procedure  can't.
Functions are normally used for computations where as   procedures are normally used for executing business logic.
A Function returns 1 value only. Procedure can return multiple values.            
Stored procedure is precompiled execution plan  where as functions are not.

CREATE FUNCTION和CREATE PROCEDURE是MySQL中用于创建自定义函数和存储过程的语句。\[1\]在GBase 8s中,虽然可以使用CREATE PROCEDURE来编写并注册返回一个或多个值的SPL例程(即SPL函数),但建议改用CREATE FUNCTION来创建函数。\[1\]要注册外部函数,必须具有CREATE ROUTINE权限。如果使用DEFINER子句,则所需的权限取决于用户值。如果启用了二进制日志记录,则创建函数可能需要超级权限。\[2\] CREATE FUNCTION用于定义自定义函数,其调用方式与调用MySQL预定义的系统函数相同。函数定义包括函数名、参数列表、返回值类型和函数体。函数体中必须包含RETURN语句来返回结果。\[3\]下面是一个示例代码: DELIMITER // CREATE FUNCTION email_by_name() RETURNS VARCHAR(25) BEGIN RETURN (SELECT email FROM emps WHERE last_name = 'Abel'); END // DELIMITER ; 可以通过调用SELECT email_by_name()来使用这个函数。 在创建函数之前,需要执行SET GLOBAL log_bin_trust_function_creators = 1;语句,以确保函数的创建成功。\[3\] 总结来说,CREATE FUNCTION用于创建自定义函数,而CREATE PROCEDURE用于创建存储过程。它们在语法和用途上有所不同,具体使用取决于您的需求。 #### 引用[.reference_title] - *1* [GBase8s数据库使用 CREATE PROCEDURE 与 CREATE FUNCTION 的对比](https://blog.csdn.net/weixin_48486849/article/details/121564607)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [mysql8 参考手册--CREATE PROCEDURE和CREATE FUNCTION语句](https://blog.csdn.net/weixin_32272937/article/details/114164835)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [【MySQL笔记】存储过程(PROCEDURE)与存储函数(FUNCTION)的创建与使用](https://blog.csdn.net/lijibai_/article/details/124819611)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值