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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • git 迁出/克隆远程仓库的指定分支方法(附常用git配置命令)

    普通克隆方式:gitclone<远程仓库地址>这种克隆方式默认是克隆master主分支,而且通过命令gitbranch–list能看到克隆后在本地也只有这一个分支,如果再通过新建分支再拉取指定分支,甚至可能还需要解决冲突,太繁琐。那么,如何快速有效的直接克隆远程指定分支?只需要一条命令:gitclone-b<指定分支名>&…

    2022年4月17日
    53
  • pycharm 2021.5.4 激活码【在线注册码/序列号/破解码】

    pycharm 2021.5.4 激活码【在线注册码/序列号/破解码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月20日
    45
  • 海量数据处理之Bloom Filter详解

    海量数据处理之Bloom Filter详解海量数据处理之BloomFilter详解 前言   本博客内曾已经整理过十道海量数据处理面试题与十个方法大总结。接下来,本博客内会重点分析那些海量数据处理的方法,并重写十道海量数据处理的面试题。如果有任何问题,欢迎不吝指正。谢谢。一、什么是BloomFilter   BloomFilter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集

    2022年6月23日
    50
  • 栈上分配存储器的方法 alloca 抽样

    栈上分配存储器的方法 alloca 抽样

    2022年1月12日
    35
  • 国外免费ASP测试空间「建议收藏」

    国外免费ASP测试空间「建议收藏」1、免费asp空间:www.jabry.com演示地址:http://users4.jabry.com/blogcn88/1/mbloghttp://users4.jabry.com/blogcn

    2022年7月2日
    23
  • shell if参数-v

    shell if参数-v先说结论:if参数-v可用于判断变量是否存在,即该变量是否已定义示例代码如下#!bin/bash#targs=0#runsim=”if[-vtargs];thenif[-vrunsim];then echo”LayerONE”fiecho”LayerTWO”fiecho”LayerThree”直接运行结果为LayerThree将第二行注释去除后,即定义变量targs=0,在此运行该脚本,结果如下Laye

    2022年7月11日
    15

发表回复

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

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