• Mysql-10 存储过程


    1、什么是存储过程

      a、存储过程就是为以后的使用而保存的一条或多条Mysql语句的集合;

      b、可将存储过程看作为批处理文件。

    2、为什么需要使用存储过程

      a、通过把处理封装在容易使用的单元中,简化复杂操作;

      b、由于不要求反复建立一系列处理步骤,这保证了数据的完整性;

      c、简化对变动的管理,如果表名、列名或业务逻辑有变化,只需要更改存储过程的代码,使用他的人员甚至不需要知道这些变化;

      d、提高性能:使用存储过程比使用单独的SQL语句更快

      e、存在一些只能用在单个请求中的MYSQL元素和特性,存储过程可以使用他们来编写功能更强更灵活的代码

      即:使用存储过程有3个主要的好处:简单、安全、高性能

    3、创建存储过程

      a、MYSQL 使用 CREATE PROCEDURE 语句创建存储过程

        CREATE PROCEDURE productpricing()

        BEGIN

          SELECT Avg(prod_price) AS priceaverage

          FROM products;

        END;

      说明: 存储过程名为:productpricing,使用CREATE PROCEDURE productpricing() 定义

          如果存储过程接受参数,它们将在()中列出

         BEGIN 和 END 语句用来限定存储过程体

    4、临时更改MYSQL的分隔符

      a、默认的mysql语句分隔符为“;”

      b、Mysql命令行实用程序也使用”;“,作为语句分隔符

      c、如果命令行实用程序姚解释存储过程自身内也有“;”

      d、则他们最终不会成为存储过程的成分,这回使得存储过程中的SQL出现句法错误

      解决办法:

      临时更改命令行实用程序的语句分隔符

      DELIMITER //

      CREATE PROCEDURE productpricing()

      BEGIN

        SELECT Avg(prod_price) AS priceaverage

        FROM products;

      END;

      DELIMITER ; 

    5、使用存储过程

      a、方法是:call productpricing();

      b、执行刚创建的存储过程并显示返回的结果

      c、存储过程实际上是一种函数,所以存储过程名后面有()符号

      d、查询存储过程

        show procedure status where db = '数据库名';

      e、删除存储过程

        1) 存储过程在创建之后,被保存在服务器上以供使用,直至被删除;

        2) 删除命令从服务器中删除存储过程

        3) 使用以下语句删除存储过程:

          DROP PROCEDURE productpricing;——删除创建的存储过程

      f、使用参数与变量

        1)存储过程一般并不显示结果,而是把结果返回给指定的变量

        2)该变量用来临时存储数据

        3)所有MYSQL 变量都必须以@开始

        4)使用SET语句设置变量

         如:SET @num=1;

      实例1:

        CREATE PROCEDURE productpricing(

          OUT PL DECIMAL(8,2)                                 ——OUT :传出参数,PL:参数,DECIMAL:是8位带有2为小数的数值

        )

        BEGIN

          SELECT Min(prod_price)

          INTO PL                ——将查询的值放到PL

          FROM products;

        END;

      实例2:

        CREATE PROCEDURE ordertotal(

          IN onumber INT,             ——IN :传入参数

          OUT ototal DECIMAL(8,2)                                 ——OUT :传出参数,ototal:参数,DECIMAL:是8位带有2为小数的数值

        )

        BEGIN

          SELECT Sum(item_price*quantity)

          FROM orderitems

          WHERE oder_num = onumber 

          INTO ototal

        END;

       调用这个存储过程:

        call ordertotal(001,@total);

       显示变量的值

        SELECT @total;

      

    个人学习笔记
  • 相关阅读:
    BZOJ 3156 防御准备
    codevs 1033 蚯蚓的游戏问题
    BZOJ 3669 【NOI2014】 魔法森林
    分享知识-快乐自己:全面解析 java注解实战指南
    分享知识-快乐自己:MySQL中的约束,添加约束,删除约束,以及一些其他修饰
    分享知识-快乐自己:Oracle基本语法(创建:表空间、用户、授权、约束等)使用指南
    分享知识-快乐自己: Oracle数据库实例、用户、表、表空间之间关系
    分享知识-快乐自己:oracle12c创建用户提示ORA-65096:公用用户名或角色无效
    分享知识-快乐自己:论 Mybatis中的关联关系(一对多,多对一,多对多)
    分享知识-快乐自己:JAVA中的 Iterator 和 Iterable 区别
  • 原文地址:https://www.cnblogs.com/feihan/p/14354039.html
Copyright © 2020-2023  润新知