实验10.3 创建和使用函数
【实验目的】
掌握函数的创建和使用方法。
【实验内容】
①创建一个函数F_Price,根据顾客姓名和商品名,查询订购该商品的总价。
②使用函数F_Price,查询顾客Tip Top订购的产品comb的总价格。
③使用流程控制函数case()实现如下功能:查询顾客的编号和顾客订单总金额,根据订单总金额为顾客输出客户等级,如果订单总金额大于等于3 000,客户等级为A;如果订单总金额大于等于1 000并且小于3 000,客户等级为B;如果订单总金额大于等于0并且小于1 000,客户等级为C;否则客户等级为D。
【实验步骤】
(1)创建函数F_Price
创建一个函数F_Price,根据顾客姓名和商品名,查询订购该商品的总价。
①在图标菜单中单击第一个图标
,新建一个查询窗口。
②在查询窗口中输入如下SQL语句:
USE `sales`;
DROP function IF EXISTS `F_Price`;
DELIMITER $$
USE `sales`$$
CREATE FUNCTION `F_Price` (
in_cname char(50),
in_pname char(50)
)
RETURNS float
READS SQL DATA
RETURN (SELECT sum(dollars) FROM orders,customers,products
WHERE orders.cid=customers.cid AND orders.pid=products.pid
AND customers.cname=in_cname AND products.pname=in_pname);$$
DELIMITER ;
③单击工具栏中的
按钮,执行上面的SQL语句,如图10.15所示。

图10.15 创建存储函数F_price
(2)使用函数F_Price
使用函数F_Price,查询顾客Tip Top订购的产品comb的总的价格。(https://www.daowen.com)
①在图标菜单中单击第一个图标
,新建一个查询窗口。
②在查询窗口输入下面的SQL语句:
SET @in_cname = 'Tip Top';
SET @in_pname = 'comb';
SELECT F_price(@in_cname,@in_pname);
③单击工具栏中的
按钮,执行窗口中的SQL语句,如图10.16所示。

图10.16 执行存储函数
(3)使用流程控制函数
用流程控制函数case()实现如下功能:查询顾客的编号和顾客订单总金额,根据订单总金额为顾客输出客户等级,如果订单总金额大于等于3 000,客户等级为A;如果订单总金额大于等于1 000并且小于3 000,客户等级为B;如果订单总金额大于等于0并且小于1 000,客户等级为C;否则客户等级为D。
①在图标菜单中单击第一个图标
,新建一个查询窗口。
②在查询窗口输入下面的SQL语句:
SELECT cid, SUM(dollars) 购买总金额,
CASE WHEN SUM(dollars)>=3000 THEN 'A'
WHEN SUM(dollars)>=1000 THEN 'B'
WHEN SUM(dollars)>=0 THEN 'C'
ELSE 'D'
END 客户等级
FROM orders
GROUP BY cid;
③单击工具栏中的
按钮,执行窗口中的SQL语句,如图10.17所示。

图10.17 查询执行结果