经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MS SQL Server » 查看文章
【SQL Server】利用游标将学生表中的成绩转化为绩点
来源:cnblogs  作者:无敌的巴啦啦  时间:2019/3/6 9:10:54  对本文有异议
软件工程综合实践第一次作业
代码来源:班上同学的数据库大作业
  1. alter table sc
  2. add GPA float; --加入绩点列
  3. alter table sc
  4. add number int identity(1,1);--将表按原始位置顺序编号(可加可不加)
  5. alter table sc add primary key(number)
  6. declare score_visit cursor --声明一个游标
  7. for select score from sc
  8. open score_visit --打开游标
  9. declare @GPA float
  10. select @GPA=score from sc
  11. fetch next from score_visit into @GPA
  12. while @@fetch_status=0 --循环读取
  13. begin
  14. if @GPA>=90
  15. update sc set GPA=4.0 where current of score_visit;
  16. if @GPA >=85 and @GPA <90
  17. update sc set GPA =3.7 where current of score_visit;
  18. if @GPA >=82 and @GPA <85
  19. update sc set GPA =3.3 where current of score_visit;
  20. if @GPA >=78 and @GPA <81
  21. update sc set GPA =3.0 where current of score_visit;
  22. if @GPA >=75 and @GPA <78
  23. update sc set GPA =2.7 where current of score_visit;
  24. if @GPA >=72 and @GPA <75
  25. update sc set GPA =2.3 where current of score_visit;
  26. if @GPA >=68 and @GPA <72
  27. update sc set GPA =2.0 where current of score_visit;
  28. if @GPA >=64 and @GPA <68
  29. update sc set GPA =1.5 where current of score_visit;
  30. if @GPA >=60 and @GPA <64
  31. update sc set GPA =1.0 where current of score_visit;
  32. if @GPA <60
  33. update sc set GPA =0 where current of score_visit;
  34. fetch next from score_visit into @GPA
  35. end
  36. close score_visit --关闭游标
  37. deallocate score_visit --删除游标
具体实现代码

一、分析、功能:在已经有学生数据的基础上,利用游标的循环读取功能,将数据表中的成绩依次转化为绩点。

       游标:是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标可以被看作是一个查询结果集(可以是零条、一条或由相关的选择 语句检索出的多条记录)和结果集中指向特定记录的游标位置组成的一个临时文件,提供了在查询结果集中向前或向后浏览数据处理结果集中数据的能力。

  在表中加入一个GPA列并合理化声明一个游标后,将原先表中的成绩数据读取到一个新的变量中,利用绩点转换规则,将成绩转化为相应绩点,并生成到GPA列,操作完成后,关闭并删除游标。

二、运行结果:(如图)

 

三、心得体会:虽然一开始并没有搞清楚游标的操作机制,导致数据的处理出现了一点小问题,但是在利用游标对数据的转化中,对游标的使用也慢慢地显得得心应手,同时又对部分细节进行了更好的深入,如读取数据时对各条数据的处理以及对表结构的细分。从陌生到熟悉正是知识体系建立并掌握的过程。

四、遇到的问题:

1.读取到的数据并不能进行实际操作

2.游标使用后未关闭/删除,导致程序下次运行时出现错误

 3.成绩比较过程中的变量处理不恰当

五、解决办法:

1.将读取到的数据暂时放入到新声明的一个变量中

2.将使用后的游标关闭/删除

3.对变量进行规范处理,统一格式

六、改进方案:

1.将 if 所在的条件判断语句块进行简化

2.直接将读取数据进行转化,不必暂时放到新声明的变量内

3.在加入GPA列后对表中数据进行分段化处理,不至于显得杂乱

 

原文链接:http://www.cnblogs.com/wddbll-home/p/10476134.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号