MySql存储过程讲解

3 篇文章 0 订阅

什么是存储过程

存储过程就简单来讲,是一条或多条MySQL语句的集合,可以看做一个批处理文件,虽然它的作用不仅仅局限于批处理.

存储过程的优点

  1. 把需要处理的内容进行封装,简化了复杂的操作

  2. 不要求反复建立一系列处理步骤,所有的开发人员和应用程序都可以使用同一存储过程

  3. 简化对变动的管理,如果表名等其他发生了变动,只需要修改存储过程即可,外界不需要对此产生感知

  4. 提高性能,由于存储过程是预编译的,所以执行比普通的SQL语句执行要快

  5. 减少网络传输带宽,如果是大量的sql,将会导致大量的带宽被浪费,因为存储过程是保存在数据库,所以可减少部分网络传输载荷

  6. 安全可靠,可自由的进行存储过程权限的分配

缺点

  1. 难以调试,如果存储过程出现了问题,很难进行调试

  2. 难以编写,编写存储过程比普通的SQL语句更复杂,对编写存储过程的人的技术水平要求很高

  3. 可能会没有创建存储过程的权限

存储过程的编写

表的初始化


create table product(
    id int primary key auto_increment,
    prod_name varchar not null,
    prod_price decimal(8,2) not null,
    prod_desc text
)

插入数据略过

创建存储过程


crate procedure productprinting()
begin
    select avg(prod_price) as avg_price
    from product;
end

解释:
crate procedure productprinting()表示创建一个叫productprinting的存储过程
beginend之间填写存储过程的具体内容

调用存储过程


call productprinting();

然后就能在得到的结果中看到调用存储过程返回的结果.

注意: 如果是cmd环境,为了确保能够完整的输入,需要将mysql的结束符改成其他的特殊字符.

delimter //就是可以将结束符定义成//,只需要在cmd环境使用//代替原来的;就可以了

删除存储过程


drop procedure productprinting;

存储过程的高级用法

变量


crate procedure productInfo(
    out p1 decimal(8,2),
    out p2 decimal(8,2),
    out p3 decimal(8,2)
)
begin
    select avg(prod_price) into p1 as avg_price
    from product;
    select min(prod_price) into p2 as avg_price
    from product;
    select max(prod_price) into p3 as avg_price
    from product;
end

解释:

  1. 此存储过程接收三个参数,并把结果存入变量p1,p2p3中.

  2. 存储过程中一般存在三种类型的参数:IN,OUT,INOUT类型
    In类型:接收外部参数
    Out类型:输出到外部参数
    InOut类型:可接收外部参数也可以输出到外部参数

调用


call productInfo(@avgPrice,@minPrice,@maxPrice);

select @avgPrice,@minPrice,@maxPrice;

注意: 所有的MySQL变量都必须以@开始

其他用法

存储过程肯定不止上述所讲的内容,还可以使用if,while等进行更加强大的判断.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值