1、实验:存储过程2一、实验目的与任务目的:旨在训练学生能创建带有输出参数的存储过程及存储过程调用存储过程。任务:根据需求,写出满足条件的存储过程。任务1: 创建存储过程prcGetStuGradeInfo,输入学生的学号,如果输入信息正确,则统计该学生所有科目的最高分和不及格的科目数,并将以上数据使用输出参数返回。create proc prcGetStuGradeInfoStuID char(10),MaxScore int = 0 OUTPUT,FailCount int = 0 OUTPUTas begin try if exists(select * from SC where StuI
2、D=StuID)begin select MaxScore = MAX(Score)from SC where StuID=StuIDselect FailCount = COUNT (*) from SC where Score=3)print亲,您挂了,重头再来吧!elsebegindeclare Credit intselect Credit = SUM(Credit) from SC join Courseon SC.CourseID = Course.CourseIDwhere StuID = StuID and Score =60print Credit endend trybeg
3、in catch print出错!end catchexec prcPrintCredit A00001任务3:写一个存储过程,查找某个学生是否选修了某门课程,如果选修了则返回1,否则返回0,错误返回-1.create proc prcGetCourseNameStuID char(10),CourseName char(20)as begin tryif exists(select * from SC join Course on SC.CourseID = Course.CourseID where StuID = StuID and CourseName = CourseName)beg
4、inreturn 1endelsereturn 0end trybegin catchreturn -1end catch再写一个存储过程调用上一存储过程,当返回值为1,显示选修成绩,为0时提示用户信息有误,-1时提示出错了。alter proc prcPrintScoreStuID char(10),CourseName char(20)asbegin trydeclare Score intdeclare ReturnValue intexec ReturnValue = prcGetCourseName StuID,CourseNameif(ReturnValue = 1)beginse
5、lect Score = Score from SC join Course on SC.CourseID = Course.CourseID where StuID = StuID and CourseName = CourseNameprint Score endelseprint 您输入的信息有误!end trybegin catchprint 出错了!end catchexec prcPrintScoreA00001,database三、内容与要求 课题名称存储过程2 (一)课题内容 按照任务1至任务3逐步完成,完成后学生可以创建带有输出参数的存储过程及存储过程调用存储过程。 (二)课题要求按照实验任务书逐步完成实验(三)考核及报告要求 1. 考核能独立完成任一项任务。2. 报告要求提交一份完整的实验报告,实验报告中详细给出每个任务的解决方案,解决方案后附带每个任务的实验结果。四、主要仪器设备硬件:PC机软件:SQL SERVER 2005