使用存储过程
廖家龙 用心听,不照做

使用存储过程

存储过程简单来说,就是为以后的使用而保存的一条或多条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;

  1. 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;