zoukankan      html  css  js  c++  java
  • 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;

      

    个人学习笔记
  • 相关阅读:
    sql server 数据类型转换
    sql server replace 的使用方法
    sql sever 触发器的概念和使用
    转,sql 50道练习题
    sql server 计算属性,计算字段的用法与解析
    sql server 的模糊查询的用法
    sql server 游标的基本用法
    sql server if exists用法
    sql server in和exists 的区别
    Sql日期时间格式转换大全
  • 原文地址:https://www.cnblogs.com/feihan/p/14354039.html
Copyright © 2011-2022 走看看