资源描述:
《实验12存储过程和游标答案》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验12存储过程和游标的使用一、实验目的1. 理解存储过程的概念,掌握各种存储过程的创建方法。2. 掌握查看、修改和删除存储过程的方法。3. 掌握执行存储过程的方法。4.掌握游标的创建和使用。二、实验内容从查询分析器中导入实验文件夹中的“实验初始化数据.sql”文件并运行,然后完成下面题目:(提示:学生表(Students):属性:学号(Sno),姓名(Sname),性别(Ssex),系别(Sdept),年龄(Sage)。其中学号设为主键,学号和姓名不能为空,性别取值只能是F或M,系别缺省值为“计算机”。选课信息表(Enro
2、llment)。属性:学号(Sno),课程名(Cno),成绩(Grade)。其中课程号设为主键,课程号和课程名不能为空.。课程信息表(Course)。属性:课程号(Cno),课程名称(Cname),学分(Credits)。)1. 存储过程的创建和使用。(1)、创建一个名为“proc_1”的存储过程,用于查看学生表的所有信息。然后调用该存储过程。SQL语句如下:USESCinfoGOCREATEPROCEDUREproc_1ASSELECT*FROMStudents(2)、创建一个名为“proc_2”的存储过程,用于向学生表的所有字段添加一条记
3、录,记录内容由调用时决定。然后调用该存储过程输入一条记录(1111,'关羽','M','English',30)。SQL语句如下:USESCinfoGOCREATEPROCEDUREproc_2@SnoSMALLINT,@SnameVARCHAR(8),@SsexCHAR(1),@SdeptVARCHAR(20),@SageTINYINTASINSERTINTOStudentsVALUES(@Sno,@Sname,@Ssex,@Sdept,@Sage)GOEXECproc_21111,'关羽','F','English',30GO(3)、创建
4、一个名为“proc_3”的存储过程,用于删除学生表中指定学号的记录,具体学号由调用时决定。然后调用该存储过程将学号为1111的记录删除。SQL语句如下:USESCinfoGOCREATEPROCEDUREproc_3@SnoSMALLINTASDELETEFROMStudentsWHERESno=@SnoGOEXECproc_31111GO(4)、修改存储过程“proc_3”,用于查询不小于指定年龄的学生的基本信息,具体年龄由调用时决定。然后调用存储过程proc_3查询年龄小于20岁的学生记录。SQL语句如下:USESCinfoGOALTER
5、PROCEDUREproc_3@SageTINYINTASSELECT*FROMStudentsWHERESage<@SageGOEXECproc_320GO2.游标的创建和使用(1)定义一个游标STU1并利用游标逐行输出学生表(Students)中学生的学号、姓名、性别,使用完游标后立即关闭并释放该游标。SQL语句如下:DECLARESTU1CURSOR---定义游标FORSELECTSno,Sname,SsexFROMStudentsOPENSTU1----打开游标DECLARE@Snosmallint,@Snamevarchar(8),
6、@Ssexchar(1)--定义变量FETCHNEXTFROMSTU1INTO@Sno,@Sname,@Ssex--获取一行值WHILE@@FETCH_STATUS=0BEGINSELECT'学号'=@Sno,'姓名'=@Sname,'性别:'=@SsexFETCHNEXTFROMSTU1INTO@Sno,@Sname,@Ssex--从游标读取下一行值ENDCLOSESTU1---关闭游标DEALLOCATESTU1---释放游标(2)定义一个游标STU2并利用该游标输出学生表(Students)中第一个学生的所有信息,然后将该学生姓名改为张
7、飞,并再次输入该学生信息,使用完游标后立即关闭并释放该游标。SQL语句如下:DECLARESTU2SCROLLCURSOR---定义游标FORSELECT*FROMStudentsFORUPDATEOFSno,Sname,Ssex,Sdept,SageOPENSTU2----打开游标DECLARE@Snosmallint,@Snamevarchar(8),@Ssexchar(1),@Sdeptvarchar(20),@Sagetinyint--定义变量FETCHNEXTFROMSTU2INTO@Sno,@Sname,@Ssex,@Sdept,
8、@Sage--获取第一行值SELECT'学号'=@Sno,'姓名'=@Sname,'性别:'=@Ssex,'系别'=@Sdept,'年龄'=@SageUPDATES