存储过程和存储函数都属于 MySQL 中的可编程对象。它们可以把多条 SQL 和业务逻辑封装起来,减少重复代码,提高复用性,并把一部分处理逻辑放在数据库内部执行。
存储过程(Stored Procedure)是保存在数据库中的一组 SQL 语句集合,可以被显式调用执行。
例如,用户开户、订单结算、批量更新等操作,如果涉及多条 SQL,就可以封装成存储过程。
存储函数(Stored Function)则更像一个“可返回值的函数”,通常接收参数并返回一个结果,常用于表达式计算和查询中。
简单理解:
- 存储过程更像“执行一段流程”
- 存储函数更像“根据输入返回一个值”
它们的主要区别包括:
- 存储过程使用
CALL调用,存储函数可以直接写在表达式里。 - 存储过程可以没有返回值,也可以通过参数返回多个结果;存储函数必须有返回值。
- 存储过程更适合封装业务流程;存储函数更适合封装可复用计算逻辑。
例如:
- “创建订单并记录日志”更适合存储过程
- “根据成绩返回等级”更适合存储函数
如果你的目标是封装一系列操作流程,优先考虑存储过程;如果你的目标是返回一个可复用的计算结果,优先考虑存储函数。