当前位置 博文首页 > Jqcode:初步了解mysql存储过程
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