第二节带参数的存储过程

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第二节带参数的存储过程存储过程的参数分为:输入参数输出参数创建带参数的存储过程的基本规则:可以带一个或多个参数,最多可带2100个参数。参数可以使用各种数据类型参数名前面冠以“@”符号,以表明其是参数。参数跟在存储过程名后多个参数之间用逗号隔开1.带输入参数的存储过程存储过程可以带一些输入参数,用于传递值给存储过程。(1)创建带输入参数的存储过程基本语法:createprocedure存储过程名@参数1数据类型,@参数2数据类型,...@参数n数据类型asbeginSQL语句1SQL语句2...SQL语句nend示例1-1:创建带2个输入参数的存储过程procGetScore,功能:根据输入的学号和课程号,获取该生所选修的这门课程的成绩。createprocedureprocGetScore@snonvarchar(10),@cnonvarchar(10)asbeginselectgradefromStudentCoursewheresno=@snoandcno=@cnoend示例1-2:创建带1个输入参数的存储过程procGetStuInfo,功能:根据输入的院系名称,获取属于该院系的所有学生的信息。createprocedureprocGetStuInfo@DepartmentNamenvarchar(20)asbeginselectsno,sname,sex,sagefromDepartmentd,Studentswhered.DepartmentID=s.DepartmentIDandDepartmentName=@DepartmentNameend示例1-3:创建带3个输入参数的存储过程procInsert,功能:根据输入的学号、课程号和成绩,往StudentCourse表插入一条记录。createprocedureprocInsert@snonvarchar(10),@cnonvarchar(10),@gradefloatasbegininsertintoStudentCourse(sno,cno,grade)values(@sno,@cno,@grade)end(2)执行带输入参数的存储过程基本语法:exec存储过程名[@参数名1=]参数值1,...,[@参数名n=]参数值n其中:可以指定参数名,也可以省略掉参数名。示例1-4:执行前面创建的存储过程procGetScore,传递参数值时,不指定参数名。execprocGetScore'8001','001'示例1-5:执行前面创建的存储过程procGetScore,传递参数值时,指定参数名。execprocGetScore@sno='8001',@cno='001'示例1-6:执行前面创建的存储过程procGetStuInfo,传递参数值时,不指定参数名。execprocGetStuInfo'软件学院'示例1-7:执行前面创建的存储过程procGetStuInfo,传递参数值时,指定参数名。execprocGetStuInfo@DepartmentName='软件学院'示例1-8:执行前面创建的存储过程procInsert,传递参数值时,不指定参数名。execprocInsert'8004','003',85示例1-9:执行前面创建的存储过程procInsert,传递参数值时,指定参数名。execprocInsert@sno='8005',@cno='001',@grade=752.带输出参数的存储过程存储过程的参数可以是输入参数,也可以是输出参数。output关键字用于指明参数为输出参数。(1)创建带输出参数的存储过程基本语法:createprocedure存储过程名@参数1数据类型output,@参数2数据类型output,...@参数n数据类型outputasbeginSQL语句1SQL语句2...SQL语句nend示例2-1:创建一个存储过程procGetDepName,带有1个输出参数@DepartmentName,功能:查找学号为“8001”的这个学生所在的院系名称。createprocedureprocGetDepName@DepartmentNamenvarchar(20)outputasbeginselect@DepartmentName=DepartmentNamefromDepartmentd,Studentswhered.DepartmentID=s.DepartmentIDands.sno='8001'end示例2-2:创建一个存储过程procGetMyScore,带有1个输出参数@grade,功能:查找学号为“8001”这个学生所选修的课程号为“001”的这门课程的成绩。createprocedureprocGetMyScore@gradefloatoutputasbeginselect@grade=gradefromStudentCoursewheresno='8001'andcno='001'end(2)执行带输出参数的存储过程基本语法:exec存储过程名@输出参数名1=@变量名1output,...,@输出参数名n=@变量名noutput执行带输出参数的存储过程时,必须先定义一个变量,以存储输出参数返回的值。变量的数据类型应该与输出参数的数据类型相匹配。执行带输出参数的存储过程时,语句本身也必须包含关键字output,以允许将输出参数值返回给变量。示例2-3:执行存储过程procGetDepName,它有1个输出参数@DepartmentName,首先定义一个变量@DepName,用于接受输出参数返回的值。declare@DepNamenvarchar(20)execprocGetDepName@DepartmentName=@DepNameoutputprint@DepName特别注意:输出参数名在前,变量名在后。示例2-4:执行存储过程procGetMyScore,它有1个输出参数@grade。declare@my_gradefloatexecprocGetMyScore@grade=@my_gradeoutputprint@my_gradeif@my_grade90print'优秀'elseif(@my_grade=90and@my_grade70)print'良好'elseprint'及格'3.带输入和输出参数的存储过程在创建存储过程时,既可以带输入参数,同时也可以带输出参数。(1)创建带输入和输出参数的存储过程示例3-1:创建一个存储过程procGetMyDepName,它带有1个输入参数@sno,还带有1个输出参数@DepartmentName,功能:根据输入的学号,找到该生所在的院系,输出院系名称。createprocedureprocGetMyDepName@snonvarchar(10),@DepartmentNamenvarchar(20)outputasbeginselect@DepartmentName=DepartmentNamefromDepartmentd,Studentswhered.DepartmentID=s.DepartmentIDands.sno=@snoend示例3-2:创建一个存储过程procGetYourScore,它带有2个输入参数@sno和@cno,还带有1个输出参数@grade,功能:根据输入的学号和课程号,获取该生所选修的这门课程的成绩,输出该成绩。createprocedureprocGetYourScore@snonvarchar(10),@cnonvarchar(10),@gradefloatoutputasbeginselect@grade=gradefromStudentCoursewheresno=@snoandcno=@cnoend(2)执行带输入和输出参数的存储过程示例3-3:执行前面创建的存储过程procGetMyDepName,它有1个输入参数@sno,还有1个输出参数@DepartmentName。declare@DepNamevarchar(20)execprocGetMyDepName@sno='8001',@DepartmentName=@DepNameoutputprint@DepName示例3-4:执行前面创建的存储过程procGetYourScore,它有2个输入参数@sno和@cno,还有1个输出参数@grade。declare@my_gradefloatexecprocGetYourScore@sno='8001',@cno='001',@grade=@my_gradeoutputprint@my_gradeif@my_grade90print'优秀'elseif(@my_grade=90and@my_grade70)print'良好'elseprint'及格'

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功