当前位置 博文首页 > Jqcode:初步了解mysql存储过程

    Jqcode:初步了解mysql存储过程

    作者:[db:作者] 时间:2021-09-16 10:36

    存储过程使用背景

    mysql5以上的版本增加了对存储过程的支持

    通常情况我们使用的sql语句是一条语句对一个表或多个表的操作,但有些操作需要多条sql语句才能完成,我们就需要用到存储过程。

    什么是存储过程

    存储过程大概可以这样简述:存储过程是为了方便以后使用而保存的一条或多条sql语句的集合

    使用存储过程的优势:简单,安全,高性能

    简单:简化了复杂的操作

    安全:封装多条sql在一个集合中,多个人使用同个存储过程不会出现问题,如果不使用存储过程就需要每个人编写多条sql去处理同一件事,因为sql不同很可能会产生错误。

    高性能:存储过程的性能比单条sql的性能更高。

    如果创建一个存储过程

    CREATE PROCEDURE product()
    BEGIN
        SELECT * FROM table;
    END;

    以上为一个简单的存储过程的创建语法, CREATE PROCEDURE + 存储过程名

    BEGIN 与 END 代表sql的结束与开始,代表一个存储体。

    以上的存储过程不会返回任何信息,即使它的存储体中包含的是SELECT语句,因为这段代码是用来创建存储过程的。

    如何使用一个存储过程

    使用CALL关键字来使用一个存储过程,例如上面我们创建的存储过程,product()。

    如果要使用,正确的调用语法是(即使不需要传参也要把后面的括号写上,代表一个函数):

    CALL product();?

    错误的调用语法:

    CALL product;

    如何删除一个存储过程

    类似于删除表或删除视图那样可以通过DROP关键字来删除一个存储过程。

    DROP PROCEDURE prodecut IF EXISTS;

    创建一个带有变量的存储过程

    CREATE PRODEDURE producting(
        OUT pl DECIMAL(8,2),
        OUT ph DECIMAL(8,2),
        OUT pa DECIMAL(8,2)
    )
    BEGIN
        SELECT Min(prod_price)
        INTO pl
        FROM product;
        SELECT Max(prod_price)
        INTO ph
        FROM product;
        SELECT Avg(prod_price)
        INTO pa
        FROM product;                                                                                                                                                                                                          
    END;
    

    关键字OUT用来指出相应的参数用来从存储过程传输给调用者

    关键字IN是从调用者传输给存储过程。

    想要调用这个存储过程必须指定三个参数,可以这样调用:

    CALL PROCEDURE?producting(@pricemin,@pricemax,@priceaverage)

    要求必须传三个参数,不能多也不能少。?

    cs