存储过程实现学生成绩由百分制到等级制2
一、实验题目:
?
?
(1)计算给定课程的总分数(2)统计给定课程的成绩分布情况,即按照各分数段统计人数;(<60,[60,70),[70,80),[80,90),[90,100]
(3)将学生选课成绩从百分制改为等级制(即A 、B 、C、D、E);
并给出一个调用的实例
? :用游标的声明、打开、提取、关闭语句执行游标操作(查询某
个指定学生名字及其所选修的课程数,以及总分),写出程序代码,总结出以上游标操作过程中各个游标属性的取值情况。给出一个调用实例
用存储过程实现:查询某个指定学生名字及其所选修的课程数,以及总分,但不使用游标,给出一个调用实例
直接写出查询某个指定学生名字及其所选修的课程数,以及总分的sql。
三种方式可以指定同一个学生。
分析各种实现方法的异同。
二、实验过程:
1. (1)用更新游标实现如下:
USE School
GO
DECLARE ***@tid char(10), ***@salary int -- 声明变量
DECLARE my_cursor CURSOR FOR -- 声明游标
SELECT tid, salary FROM teachers
OPEN my_cursor -- 打开游标
FETCH NEXT FROM my_cursor INTO ***@tid, ***@salary -- 读取记录并推进游标
WHILE @***@fetch_status=0
BEGIN
IF ***@salary < 3000
UPDATE teachers SET salary=***@salary+300 WHERE current of my_cursor
IF ***@salary >= 3000 and ***@salary < 4000
UPDATE teachers SET salary=***@salary+200 WHERE current of my_cursor
IF ***@salary >= 4000
UPDATE teachers SET salary=***@salary-200 WHERE current of my_cursor
FETCH NEXT FROM my_cursor INTO ***@tid, ***@salary -- 读取记录并推进游标
END
CLOSE my_cursor -- 关闭游标
DEALLOCATE my_cursor -- 释放游标
执行前教师部分表如下:
执行后教师表中对应部分如下:
2. (1)先看第一个求总分的实验的解题过程:
第一种方法如下:
Create proc score_sum0
***@class char(8),
***@sum int output
As
select ***@sum =sum(score)
from choices
group by cid
having cid=***@class
执行入下:
Declare ***@tal int
EXEC score_sum '
存储过程实现学生成绩由百分制到等级制2 来自淘豆网www.taodocs.com转载请标明出处.