实践目标:
1.掌握存储过程的创建
2.掌握存储过程的调用
3.能运用存储过程进行程序设计,解决运用问题
一、实训内容:
(1)创建一个存储过程,用于获取指定线路的详细线路信息,要求显示线路名、行程天数、价格、交通工具和住宿标准。
-- (1)创建一个存储过程,用于获取指定线路的详细线路信息,
-- 要求显示线路名、行程天数、价格、交通工具和住宿标准。
-- 开始:创建存储过程框架
drop PROCEDURE if exists proc_1;
create procedure proc_1(lname varchar(20))
begin
SELECT l.lineName,l.days,l.price,l.vehicle ,l.hotel
FROM line l
WHERE INSTR(l.lineName,lname)>0 ;
end;
-- 调用
CALL proc_1('黄陂木兰天池');
-- 模糊查询
CALL proc_1('山');
(**2)创建一个存储过程,用于获取指定线路类型的线路个数与全部线路个数之比。**
-- (2)创建一个存储过程,用于获取指定线路类型的线路个数与全部线路个数之比。
-- 框架
drop PROCEDURE if exists proc_2;
create procedure proc_2(type VARCHAR(20),out percent DECIMAL(6,2))
comment 'type 线路类型,percent 线路个数与全部线路个数之比'
begin
DECLARE tid ,num,total int;
-- 1. 查询指定线路类型的ID
select lt.lineTypeID INTO tid
from linetype lt
where INSTR(lt.typeName,type);
-- 2. 根据类型ID在line查询线路数
select count(*) INTO num
from line l
where l.lineTypeID = tid;
-- 3. 查询line表所有线路数
select count(*) INTO total
from line l;
-- 4. 计算比值赋值给percent
SET percent = num / total;
end;
-- 调用
call proc_2('短线游',@p);
SELECT '短线游',CONCAT(round(@p*100,2),'%');
call proc_2('短线游11',@p);
SELECT '短线游11',CONCAT(round(@p*100,2),'%');
(3)创建一个存储过程,用于获取指定交通工具和住宿标准的线路的平均价格。
二、自主练习
(1)创建一个存储过程,用于获取指定线路类型的平均价格、最低价格和最高价格。
(2)创建一个存储过程,用于获取价格在某个区间范围之内的线路信息。