实践目标:

1.掌握存储过程的创建

2.掌握存储过程的调用

3.能运用存储过程进行程序设计,解决运用问题

画板

一、实训内容:

(1)创建一个存储过程,用于获取指定线路的详细线路信息,要求显示线路名、行程天数、价格、交通工具和住宿标准。

  1. -- 1)创建一个存储过程,用于获取指定线路的详细线路信息,
  2. -- 要求显示线路名、行程天数、价格、交通工具和住宿标准。
  3. -- 开始:创建存储过程框架
  4. drop PROCEDURE if exists proc_1;
  5. create procedure proc_1(lname varchar(20))
  6. begin
  7. SELECT l.lineName,l.days,l.price,l.vehicle ,l.hotel
  8. FROM line l
  9. WHERE INSTR(l.lineName,lname)>0 ;
  10. end;
  11. -- 调用
  12. CALL proc_1('黄陂木兰天池');
  13. -- 模糊查询
  14. CALL proc_1('山');

**2)创建一存储过程用于获取指定线路类型的线路个数与全部线路个数之比。**

  1. -- 2)创建一个存储过程,用于获取指定线路类型的线路个数与全部线路个数之比。
  2. -- 框架
  3. drop PROCEDURE if exists proc_2;
  4. create procedure proc_2(type VARCHAR(20),out percent DECIMAL(6,2))
  5. comment 'type 线路类型,percent 线路个数与全部线路个数之比'
  6. begin
  7. DECLARE tid ,num,total int;
  8. -- 1. 查询指定线路类型的ID
  9. select lt.lineTypeID INTO tid
  10. from linetype lt
  11. where INSTR(lt.typeName,type);
  12. -- 2. 根据类型IDline查询线路数
  13. select count(*) INTO num
  14. from line l
  15. where l.lineTypeID = tid;
  16. -- 3. 查询line表所有线路数
  17. select count(*) INTO total
  18. from line l;
  19. -- 4. 计算比值赋值给percent
  20. SET percent = num / total;
  21. end;
  22. -- 调用
  23. call proc_2('短线游',@p);
  24. SELECT '短线游',CONCAT(round(@p*100,2),'%');
  25. call proc_2('短线游11',@p);
  26. SELECT '短线游11',CONCAT(round(@p*100,2),'%');

(3)创建一个存储过程,用于获取指定交通工具和住宿标准的线路的平均价格。

二、自主练习

(1)创建一个存储过程,用于获取指定线路类型的平均价格、最低价格和最高价格。

(2)创建一个存储过程,用于获取价格在某个区间范围之内的线路信息。