MySql必知必会实战练习(五)存储过程

1.为什么使用存储过程?(1)通过把处理封装在容易使用的单元中,简化复杂操作(2)为了保证数据的完整性,不要求反复建立一系列的处理操作,所有开发人员和应用程序都使用同一(试验和测试)存储过程

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

1. 为什么使用存储过程?

(1) 通过把处理封装在容易使用的单元中,简化复杂操作

(2) 为了保证数据的完整性,不要求反复建立一系列的处理操作,所有开发人员和应用程序都使用同一(试验和测试)存储过程,则所使用的代码否的相同的,这一点的延申就是为了防止错误,保证数据的一致性

(3)提高性能,因为使用存储过程比使用单独的SQL语句要快

(4)存储功能可以编写功能更强更灵活的代码

  一句话,既简单、安全又高性能

2. 创建存储过程

create procedure product_price()
begin
    select Avg(proc_price) as priceaverage
    from products;
end;

  调用:

  call product_price()

  输出:

  MySql必知必会实战练习(五)存储过程

 是不是很简单,下面使用返回值创建存储过程

drop procedure product_price;
create procedure product_price(
    OUT pa decimal(8,2)
)
begin
    select Avg(proc_price) into pa
    from products;
end;

call product_price(@priceaverge);
select @priceaverge

MySql必知必会实战练习(五)存储过程

  下面是参数和返回值创建存储过程

drop procedure IF EXISTS product_price;
create procedure product_price(
    IN number int,
    OUT sum decimal(8,2)
)
begin
    select Sum(proc_price) into sum
    from products 
    where vend_id = number;
end;

call product_price(1003, @pricesum);
select @pricesum;

MySql必知必会实战练习(五)存储过程

3. 复杂存储过程展示

  使用先前创建的orderitems表

  MySql必知必会实战练习(五)存储过程

  需求:

  通过order_num计算该订单号的产品总价,再根据是否交税情况返回最终价格

create procedure orderprice(
    in ordernum int,
    in istax boolean,
    out sumprice decimal(8,2)
)
begin
    declare taxrate int default 6;
    select Sum(quantity * item_price) into sumprice
    from orderitems
    where order_num = ordernum;
    
    if istax then
        select sumprice+(sumprice*taxrate/100) into sumprice;
    end if;
end;

  测试:

call orderprice(20005,0,@sumprice);
select @sumprice;

MySql必知必会实战练习(五)存储过程

call orderprice(20005,1,@sumprice);
select @sumprice;

MySql必知必会实战练习(五)存储过程

4. 对于使用mysql命令行进程存储操作的补充

  由于mysql命令行使用;作为语句分隔符,如果命令行要解析存储过程的;字符,则它们最终不会成为存储过程的成分,这会使存储过程中的sql出现句法错误。

  可以采用下列方法进行解决:

DELIMITER //
create procedure product_price()
begin
    select Avg(proc_price) as priceaverage
    from products;
end //
DELIMITER ;

  DELIMITER // 告诉命令行实用程序使用//作为新的语句结束分隔符,最后再还原为DELIMITER ;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120051.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • origin两个柱状图重叠在一起怎么分开_origin柱状图重叠怎么分开

    origin两个柱状图重叠在一起怎么分开_origin柱状图重叠怎么分开今天论文作图的时候,遇到一个问题:输入两列y数据,想绘制柱状图,但是它们重叠了,我希望他们并列:解决方法:右键点击绘图内容之后选中两列数据,再点击“成组”即可…

    2022年9月27日
    4
  • 月神带你逻辑漏洞挖掘

    月神带你逻辑漏洞挖掘业务逻辑漏洞挖掘由于程序逻辑不严谨或逻辑太过复杂,导致一些逻辑分支不能正常处理或处理错误,统称为业务逻辑漏洞JSRC安全小课堂第125期,邀请到月神作为讲师就如何通过技术手段挖掘业务逻辑下的漏洞为大家进行分享。同时感谢小伙伴们的精彩讨论。京安小妹:业务逻辑漏洞常见发生位置?月神:要是按细节来说,每一处都可以是发生位置。每种类型的APP都有自己的常见漏洞位置。例如购买,出售,每一条协议的关键参数。京安小妹:业务逻辑漏洞的分类?月神:本文中特定值指的是指当系…

    2022年6月4日
    66
  • 针对.NET Core, Xamarin以及.NET的自动类型安全Rest库: Refit

    针对.NET Core, Xamarin以及.NET的自动类型安全Rest库: Refit本文大部分内容是针对Refit官网的翻译。官网地址:https://github.com/reactiveui/refitRefit是一个类似于Retrofit的Res…

    2025年7月21日
    6
  • 大数据平台建设路径

    大数据平台建设路径数字化转型这几年成为了集团公司或大型企业寻求业务突破的重要手段,而且各行各业都不乏成功案例,例如金融行业的建设银行、招商银行、平安保险等,还有一些生动的例子,例如百丽鞋业。而国外的经典案例就是亚马逊和特斯拉。集团客户动静都很大,首先要做咨询规划,必须跟上投入和管理配套,然后可以开始平台建设,最终开始应用,赋能各业务线和产品线。从技术的角度,一个完整的大数据平台通常会三期建设。先看下图:蓝色部分是第一期内容,绿色部分是第二期内容,橙色部分是第三期内容。第一步,先建设大数据基础平台。首要满足的是数据汇聚

    2022年4月30日
    41
  • Heartbleed第二篇:Heartbleed漏洞剖析

    Heartbleed第二篇:Heartbleed漏洞剖析Heartbleed漏洞剖析

    2022年7月15日
    25
  • 叙事传输的说服机制_简述传输层实现可靠传输措施

    叙事传输的说服机制_简述传输层实现可靠传输措施博文《PUSCH上行跳频(1)-Type1频率跳频》里提到了为什么要使用PUSCH跳频,以及详细介绍了Type1方式的跳频,本文继续这个话题,介绍Type2方式的跳频。1.采用PUSCH跳频时需要注意的问题在上行子帧中,PUCCH信道处于带宽的高低两侧,或者说位于频带的边缘,PUSCH信道则位于带宽的中间。PUCCH信道也以RB对为基本单位,每个RB在频域上是12个子载波,时域上是1个时隙。需要注意PUCCH信道每个RB对的两个RB位置:第一个时隙的PUCCH信道位于带宽的低频位置,第二个时隙的

    2025年6月11日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号