课程实验报告课程名称数据库系统概论班级实验日期2012.11.22姓名学号实验成绩实验名称实验4:编写存储过程访问数据库实验目的及要求1.熟悉使用存储过程来进行数据库应用程序的设计。实验环境操作系统:WindowsDBMS:SQLServer2005实验内容创建关系模式SCSC(snovarchar(10)主键,Student表的外键,cnovarchar(5)主键,Course表的外键,gradeint,newgradevarchar(1))一开始SC表中的前3列是有数据的,newgrade列全部是空的1.编写存储过程将学生选课成绩(百分制)转换成等级制(即A、B、C、D、F),要求使用游标完成其中,A:90~100B:80~89C:70~70D:60~69F:0~592.执行该存储过程,使得newgrade列中为各等级。调试过程及实验结果总结刚开始做的时候,没有多少思路,就比这书上做的,后来出现了很多错误,execsql是在别的软件中所用到的,而在sql中不适用;在声明变量时,我没有带着@提示必须声明标量变量@exgrade,后来经询问同学,必须要加@;执行循环的时候,不知道执行的条件后来经在网上找到答案,sql中有自带的全局变量@@FETCH_STATUS控制循环,直到表中数据为空时结束;在程序完成后,出现sc对象不能识别,这个错误很难查找,不是程序的错误,查询sc时可以,经过询问同学,调试多次很难找出,最终把sql关闭了再重新打开就可以,感觉很奇怪,这也许是软件自身的原因。附录createprocedureexchangeasbegindeclare@exnewgradevarchar(1),@exsnovarchar(10),@excnovarchar(5),@exgradeintdeclareexcursorforselectsno,cno,gradefromscopenexfetchexinto@exsno,@excno,@exgradewhile(@@FETCH_STATUS=0)beginif@exgrade60set@exnewgrade='E'elseif@exgrade70set@exnewgrade='D'elseif@exgrade80set@exnewgrade='C'elseif@exgrade90set@exnewgrade='B'elseif@exgrade100set@exnewgrade='A'updatescsetnewgrade=@exnewgradewheresno=@exsnoandcno=@excnofetchexinto@exsno,@excno,@exgradeendcloseexdeallocateexendexecuteexchangedropprocedureexchangeupdatescsetnewgrade=nullselect*fromsc