初步了解mysql存储过程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jqc874789596/article/details/84313253

存储过程使用背景

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)

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

猜你喜欢

转载自blog.csdn.net/jqc874789596/article/details/84313253
今日推荐