1实验目的
熟悉使用存储过程来进行数据库应用程序的设计。
2实验平台和实验工具
KingbaseES数据库管理系统,KingbaseES PL/SQL执行引擎。
3实验内容及要求
对学生课程数据库,编写存储过程,完成下面功能:
- 统计离散数学的成绩分布情况,即按照各分数段统计人数;
- 统计任意一门课的平均成绩。
- 将学生选课成绩从百分制改为等级制(即A、B、C、D、E);
要求:提交源程序并标识必要的注释。保证程序能正确编译和运行,认真填写实验报告。
4实验步骤
1. 创建存储过程
a. 创建需要的表结构
因为存储过程执行后在客户端并没有返回值,因此需要建立一个表来存放执行后的结果,并返回客户端显示。
根据实验要求,要统计选修“离散数学”课程的学生的成绩分布,因此急需要建立表Rank。
create table rank(division char(20), number int);
b. 编写存储过程
create or replace procedure statistic_mark(name char(40))
AS
DECLARE
less60 INT :=0;
b60a70 INT :=0;
b70a80 INT :=0;
b80a90 INT :=0;
more90 INT :=0;
curcno CHAR(4);
begin
select cno INTO curcno /*查找课程名称对应的课程号*/
from course
where cname = name;
SELECT count(*) INTO less60 /*查询成绩小于60的学生人数,并存在变量less60中*/
FROM SC
WHERE cno =curcno AND grade <60;
SELECT count(*) INTO b60a70 /*查询成绩在60~70的学生人数,并存在变量b60a70中*/
FROM SC
WHERE cno =curcno AND grade >=60 AND grade<70;
SELECT count(*) INTO b70a80 /*查询成绩在70~80的学生人数,并存在变量b70a80中*/
FROM SC
WHERE cno =curcno AND grade >=70 AND grade<80;
SELECT count(*) INTO b80a90 /*查询成绩在80~90的学生人数,并存在变量b80a90中*/
FROM SC
WHERE cno =curcno AND grade >=80 AND grade<90;
SELECT count(*) INTO more90 /*查询成绩大于90的学生人数,并存在变量more90中*/
FROM</