16.1 存储过程和函数简介
存储过程和函数不仅能够简化开发人员开发应用程序的工作量,而且对于存储过程和函数中SQL语句的变动,无须修改上层应用程序的代码,这也大大简化了后期对于应用程序维护的复杂度。
16.1.1 什么是存储过程和函数
在MySQL数据库中,存储程序可以分为存储过程和存储函数。存储过程和存储函数都是一系列SQL语句的集合,这些SQL语句被封装到一起组成一个存储过程或者存储函数保存到数据库中。应用程序调用存储过程只需要通过CALL关键字并指定存储过程的名称和参数即可;同样,应用程序调用存储函数只需要通过SELECT关键字并指定存储函数的名称和参数即可。
存储过程和存储函数是有一定区别的,存储函数必须有返回值,而存储过程没有。另外,存储过程的参数类型可以是IN、OUT和INOUT,而存储函数的参数类型只能是IN。
16.1.2 存储过程和函数的使用场景
在实际的企业项目开发过程中,往往不会只编写针对一个或多个表的单条SQL语句,而经常会编写一些复杂的业务逻辑,这些业务逻辑往往需要多条SQL语句的配合才能完成。
在实际工作中,可以单独编写每条SQL语句,根据SQL语句执行的先后顺序和结果条件,依次执行其他SQL语句。不过,在每个需要处理这些逻辑的地方,都需要编写这些复杂的业务逻辑来保证业务流程的正确性。
例如,在笔者主导开发的电商系统中,一个典型的场景就是用户提交订单的流程。在用户提交订单时,系统中会包含如下几种行为: