1、概念
存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后,再次调用不需要重复编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
2、使用场景
1.业务流程复杂业务复杂时,SQL语句相互依赖,顺序执行; 2.频繁访问数据库每条SQL语句都需单独连接和访问数据库; 3.先编译后执行SQL语句的执行需要先编译。
3、语法
CREATE PROCEDURE ( [ [IN |OUT |INOUT] 参数名数据类型…]) BEGIN DECLARE 变量变量类型 END
例:
drop procedure proc_stuPage; delimiter $$ create procedure proc_stuPage(in curpage int,in sizepage int,out stucount int,out pagecount int ) begin declare cp int;set cp = (curpage-1)*sizepage;select count(*) from student into stucount;set pagecount = ceiling(stucount / sizepage);select * from student limit cp,sizepage; end $$ delimiter ; set @a = 0; set @b = 0; call proc_stuPage(2,3,@a,@b); select @a,@b
4、操作
1.调用存储过程CALL 存储过程名[参数名] 2.查看存储过程SELECT* FROM information_schema.ROUTINES WHEREroutine_schema=‘库名’ 3.删除存储过程DROP PROCEDURE 存储过程名;
5、存储过程与函数的区别
1.语法关键字不同,存储过程是procedure,函数是function; 2.执行存储过程可以独立执行,函数必须依赖表达式的调用; 3.返回值存储过程可以定义多个返回结果,函数只有一个返回值; 4.功能函数不易做复杂的业务逻辑,但是存储过程可以。
6、存储过程的缺陷
1.维护性存储过程的维护成本高,修改调试较为麻烦。 2.移植性大多数关系型数据库的存储过程存在细微差异。 3.协作性没有相关的版本控制或者IDE,团队中对于存储过程的使用大多是依赖文档。