资源描述:
《存储过程参数案例》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、存储过程参数使用输入参数执行存储过程存储过程(procedure)类似于C语言中的函数用来执行管理任务或应用复杂的业务规则存储过程可以带参数,也可以返回结果参数分为输入参数、输出参数输入参数允许有默认值创建不带参数的存储过程1-1问题:请创建存储过程,查看本次考试平均分以及未通过考试的学员名单创建不带参数的存储过程1-2CREATEPROCEDUREproc_stuASDECLARE@writtenAvgfloat,@labAvgfloat/*笔试平均分和机试平均分变量*/SELECT@writtenAvg=AVG(writtenExam),@labAvg=
2、AVG(labExam)FROMstuMarksprint'笔试平均分:'+convert(varchar(5),@writtenAvg)print'机试平均分:'+convert(varchar(5),@labAvg)IF(@writtenAvg>70AND@labAvg>70)print'本班考试成绩:优秀'/*显示考试成绩的等级*/ELSEprint'本班考试成绩:较差'print'------------------------------------------------'print'参加本次考试没有通过的学员:'SELECTstuName,st
3、uInfo.stuNo,writtenExam,LabExamFromstuInfo/*查询没有通过考试的学员*/INNERJOINstuMarksONstuInfo.stuNo=stuMarks.stuNoWHEREwrittenExam<60ORLabExam<60创建带参数的存储过程2-1存储过程的参数分两种:输入参数输出参数输入参数:用于向存储过程传入值,类似C语言的按值传递;输出参数:用于在调用存储过程后,返回结果,类似C语言的按引用传递;带输入参数的存储过程3-1通过参数名传递值用@parameter=value格式在EXEC语句 中指定参数
4、称为通过参数名传递值.在通过参数名传递值时,参数可以以任何顺序指定,可以忽略允许空值和有默认的参数存在时(相当于覆盖了).带输入参数的存储过程3-2在以下情况下使用存储过程中定义的默认参数值:在执行存储过程时没有给参数指定值.指定default关键字作为参数的值.带输入参数的存储过程3-3问题:修改上例:由于每次考试的难易程度不一样,每次笔试和机试的及格线可能随时变化(不再是60分),这导致考试的评判结果也相应变化。分析:在述存储过程添加2个输入参数:@writtenPass笔试及格线@labPass机试及格线带输入参数的存储过程3-4CREATEPROCE
5、DUREproc_stu1@writtenPassint,/*输入参数:笔试及格线*/@labPassint/*输入参数:机试及格线*/ASprint'--------------------------------------------------'print'参加本次考试没有通过的学员:'SELECTstuName,stuInfo.stuNo,writtenExam,labExamFromstuInfo/*查询没有通过考试的学员*/INNERJOINstuMarksONstuInfo.stuNo=stuMarks.stuNoWHEREwrittenEx
6、am<@writtenPassORlabExam<@labPass带输入参数的存储过程3-5调用带参数的存储过程假定本次考试机试偏难,机试的及格线定为55分,笔试及格线定为60分调用过程EXECproc_stu160,55--或这样调用:EXECproc_stu1@labPass=55,@writtenPass=60输入参数的默认值4-1带参数的存储过程确实比较方便,调用者可根据试卷的难易度,随时修改每次考试的及格线.问题:如果试卷的难易程度合适,则调用者还是必须如此调用:EXECproc_stu60,60,比较麻烦,这样调用就比较合理:EXECproc_s
7、tu155-笔试及格线55分,机试及格线默认为60分EXECproc_stu1-笔试和机试及格线都默认为标准的60分输入参数的默认值4-2CREATEPROCEDUREproc_stu2@writtenPassint=60,/*笔试及格线:默认为60分*/@labPassint=60/*机试及格线:默认为60分*/ASprint'--------------------------------------------------'print'参加本次考试没有通过的学员:'SELECTstuName,stuInfo.stuNo,writtenExam,LabE
8、xamFROMstuInfoINNERJOINstu