HUNAN UNIVERSITY
实验报告
题 目:
数据库实验六
学生姓名:
学生学号: 专业班级:
上课老师:
实验目的
熟悉使用存储过程来进行数据库应用程序的设计。
实验平台和实验工具
Windows
10、mysql 实验内容及要求
对学生课程数据库,编写存储过程,完成下面功能:
1)统计离散数学的成绩分布情况,即按照各分数段统计人数; 2)统计任意一门课的平均成绩。
3)将学生选课成绩从百分制改为等级制(即A、B、C、D、E);
步骤:
在实验之前已经建立了student、course、score三张表
1) 统计离散数学的成绩分布情况,即按照各分数段统计人数 i.创建sc_rank表存放结果
ii.创建存储过程
iii.执行存储过程
iv.执行结果
根据score可以看出操作成功。
删除存储过程 v.
2) 统计任意一门课的平均成绩 i.创建存储结果的表score_avg:cname存储课程名,avg存储平均成绩
ii.创建存储过程
iii.
执行存储过程
iv.
执行结果
由结果可以得出存储过程得以正确执行。
删除过程
3) 将学生选课成绩从百分制改为等级制(即A、B、C、D、E) i.创建存储过程 v.
ii.执行结果
从grade和newgrade的对比可以知道结果是正确的。
iii.删除存储过程
问题
在做第三小问的时候,出现了如下情况:
原因是:
我把不是游标范围内做的事情放到游标的范围里面去了,结果将列删除了,插入不成功,出现错误。
实验心得
在做这个实验的时候上网查了好多资料,用的是mysql,有些语法与课本上有差异,很多都要自己琢磨,在一些语法上其他的数据库可能简单一些(如kingbase上支持record类型),有一些可能又会难一点,不过总体来说都差不多,主要还是懂,即使只是一点点的不同,不知道也是做不出来的。所以,这些东西还是需要花一些时间去查阅资料和花点时间来消化的。
以下为mysql存储过程的一些知识点:
MySQL存储过程的参数用在存储过程的定义,共有三种参数类型,IN,OUT,INOUT,形式如:CREATE PROCEDURE([[IN |OUT |INOUT ] 参数名 数据类形...]) IN 输入参数:表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值
OUT 输出参数:该值可在存储过程内部被改变,并可返回 INOUT 输入输出参数:调用时指定,并且可被改变和返回