数据库-存储过程

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,团队中对于存储过程的使用大多是依赖文档。
  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值