使用存储过程
存储过程简单来说,就是为以后的使用而保存的一条或多条MySQL语句的集合。可将其视为批文件,虽然它们的作用不仅限于批处理
1)执行存储过程:
MySQL称存储过程的执行为调用,因此MySQL执行存储过程的语句为CALL,CALL接受存储过程的名字以及需要传递给它的任意参数
CALL productpricing(@pricelow,
@pricehigh,
@priceaverage);
2)创建存储过程
CREATE PROCEDURE productpricing()
BEGIN
SELECT Avg(prod_price) AS priceaverage
FROM products;
END;
3)使用存储过程:
CALL productpricing();
4)删除存储过程:
DROP PROCEDURE productpricing;
变量:内存中一个特定的位置,用来临时存储数据
变量名:所有MySQL变量都必须以@开始
5)每个参数必须具有指定的类型,这里使用十进制值,关键字OUT指出相应的参数用来从存储过程传出一个值(返回给调用者);MySQL支持IN(传递给存储过程)、OUT(从存储过程传出)和INOUT(对存储过程传入和传出)类型的参数
CREATE PROCEDURE productpricing(
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;
CALL productpricing(@pricelow,
@pricehigh,
@priceaverage);
为了获得3个值,可使用:
SELECT @pricehigh,@pricelow, @priceaverage;
- CREATE PROCEDURE ordertotal(
IN onumber INT,
OUT ototal DECIMAL(8,2)
)
BEGIN
SELECT Sum(item_price*quantity)
FROM orderitems;
WHERE order_num=onumber
INTO ototal;
END;
CALL ordertotal(20005,@total);
SELECT @total;