表一:学生情况信息表 XS
学号 姓名 专业名 性别 出生时间 总学分 备注
主键
表三 学生与课程表 XS_KC
表二:课程表 KC
课程号 课程名 开课学期 学时 学分
主键
学号 课程号 成绩 学分
主键 主键
创建游标
创建游标MYCURSOR,查询结果集为所有学生的总学分,并定义变量@score将当前结果读取至@score变量中,用WHILE语句循环,若查找到:。分以一:的记录则删除(在WHERE子句中使角CURRENT OF游标名,指明是当前游标指针所指向的记录。)若在30至40之间的记录,则增加20分,操作完成后关闭游标并删除。
注:CURRENT OF关键字使用时游标定义中不出现READ-ONLY或FAST FORWARD。
------解决方案--------------------
--游标的用法
DECLARE pivot_Cursor CURSOR FOR
select a from pivot
OPEN pivot_Cursor
FETCH NEXT FROM pivot_Cursor into @a
WHILE @@FETCH_STATUS = 0
BEGIN
……
FETCH NEXT FROM pivot_Cursor into @a
END
CLOSE pivot_Cursor
DEALLOCATE pivot_Cursor
------解决方案--------------------
DECLARE pivot_Cursor CURSOR FOR
select a,b from pivot--这是要用游标遍历的结果集
OPEN pivot_Cursor
FETCH NEXT FROM pivot_Cursor into @a,@b--这是得到第一条记录,将该记录的列赋给变量
WHILE @@FETCH_STATUS = 0--这是判断后面还有没有数据
BEGIN
……--这是在处理
FETCH NEXT FROM pivot_Cursor into @a--这是得到下一条记录
END
CLOSE pivot_Cursor
DEALLOCATE pivot_Cursor
------解决方案--------------------
最好不要用游标