mysql学习之存储过程

来源:互联网 发布:sketch3 mac 破解汉化 编辑:程序博客网 时间:2024/06/07 16:04

1、什么是存储过程

      在我看来,存储过程类似于我们编程中的过程或函数。由多条SQl语句来实现一个比较复杂的功能。

2、作用

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

     2)通过把处理封装在容易使用的单元中,简化复杂的操作。像接口一样,所有的开发人员和应用程序调用相同的存储过程,保证了数据安全和统一

     3)简化对变动的管理。如果表名、列名或业务逻辑有变化,只需要更改存储过程的代码。使用它的人员甚至不需要知道这些变化。通过存储过程限制对基础数据的访问减少

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


3、创建

    CREATE PROCEDURE [过程名](参数)   //没有参数也要写()

    参数修饰 IN:传入存储过程的参数; OUT:传出存储过程的参数; INOUT:传入和传出的存储过程参数

    

     一个不带参数的例子:

      CREATE PROCEDURE PRO_AvgPrice()

       BEGIN

             SELECT Avg(prod_proice) AS AvgPrice

             FROM products

         END;


    一个带参数的例子:

    CREATAE PROCEDURE PRO_Price(

        OUT Pl DECIMAL(8,2), 

        OUT Ph DECIMAL(8,2),

        OUT Pa DECIMAL(8,2)

    )

    BEGIN

         SELECT Min(prod_price)  INTO Pl  FROM products;

         SELECT Max(prod_price)  INTO Ph  FROM products;

         SELECT Avg(prod_price)  INTO Pa  FROM products;

     END;


DECIMAL(8,2):

注意的是decimal(8,2)总长8位,包括1位小数点和2为小数,也就是说8-1-2=5 整数位只有5位 如 12345.21

       

4、调用

  CALL PRO_AvgPrice();

  CALL  PRO_Price(@priceLow, @priceHigh, @priceAverage); //变量都必须以@开始。


  可显示

   SELECT @priceLow, @priceHigh, @priceAverage;


5、删除存储过程

DROP PROCEDURE PRO_AvgPrice  //删除不存在的存储过程将报错


DROP PROCEDURE PRO_AvgPrice  IF EXISTS


6、显示存储过程的创建语句

    SHOW CREATE PROCEDURE PRO_Price;


7、显示所有的存储过程的状态列表,可获得存储过程创建的时间,由谁创建等信息

    SHOW PROCEDURE STATUS


8、显示部分存储过程的状态列表

    SHOW PROCEDURE STATUS LIKE 'PRO_Price';

     

     

      



0 0
原创粉丝点击