使用PL/SQL编写存储过程访问数据库

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</
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值