存储函数和存储过程不同的地方有以下几点:

1.函数的参数列表中模式只能为IN。

2.函数必须返回一个值,它的类型被定义于函数的头部

3.函数能被SQL语句所调用

4.函数可能不返回任何结果集

DELIMITER $$

DROP FUNCTION IF EXISTS discount_price$$

CREATE FUNCTION discount_price
        normal_price NUMERIC(8, 2)
        RETURN NUMERIC(8, 2)
        DETERMINISTIC
BEGIN 

    DECLARE v_discount_price NUMERIC(8, 2);

    IF (normal_price > 500) THEN
        SET discount_price = normal_price * .8;
    ELSE IF (normal_price > 1000) THEN 
        SET discount_price = normal_price * .9;
    ELSE 
        SET discount_price = normal_price;

    END IF;

    RETURN (discount_price);

END$$