第二节带参数的存储过程_第1页
第二节带参数的存储过程_第2页
第二节带参数的存储过程_第3页
第二节带参数的存储过程_第4页
第二节带参数的存储过程_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第二节 带参数的存储过程存储过程的参数分为: 输入参数 输出参数 创建带参数的存储过程的基本规则: 可以带一个或多个参数,最多可带2100个参数。 参数可以使用各种数据类型 参数名前面冠以“”符号,以表明其是参数。 参数跟在存储过程名后 多个参数之间用逗号隔开1. 带输入参数的存储过程存储过程可以带一些输入参数,用于传递值给存储过程。(1) 创建带输入参数的存储过程基本语法:create procedure 存储过程名 参数1 数据类型, 参数2 数据类型, . 参数n 数据类型asbegin SQL语句1 SQL语句2 . SQL语句nend示例1-1:创建带2个输入参数的存储过程procG

2、etScore,功能:根据输入的学号和课程号,获取该生所选修的这门课程的成绩。create procedure procGetScore sno nvarchar(10), cno nvarchar(10)asbegin select grade from StudentCourse where sno = sno and cno = cnoend示例1-2:创建带1个输入参数的存储过程procGetStuInfo,功能:根据输入的院系名称,获取属于该院系的所有学生的信息。create procedure procGetStuInfo DepartmentName nvarchar(20)as

3、begin select sno, sname, sex, sage from Department d, Student s where d.DepartmentID = s.DepartmentID and DepartmentName = DepartmentNameend示例1-3:创建带3个输入参数的存储过程procInsert,功能:根据输入的学号、课程号和成绩,往StudentCourse表插入一条记录。create procedure procInsert sno nvarchar(10), cno nvarchar(10), grade floatasbegin insert

4、 into StudentCourse (sno, cno, grade) values (sno, cno, grade)end(2) 执行带输入参数的存储过程基本语法:exec 存储过程名参数名1= 参数值1,.,参数名n = 参数值n其中:可以指定参数名,也可以省略掉参数名。示例1-4:执行前面创建的存储过程procGetScore,传递参数值时,不指定参数名。exec procGetScore 8001, 001示例1-5:执行前面创建的存储过程procGetScore,传递参数值时,指定参数名。exec procGetScore sno = 8001, cno = 001示例1-6:

5、执行前面创建的存储过程procGetStuInfo,传递参数值时,不指定参数名。exec procGetStuInfo 软件学院示例1-7:执行前面创建的存储过程procGetStuInfo,传递参数值时,指定参数名。exec procGetStuInfo DepartmentName = 软件学院示例1-8:执行前面创建的存储过程procInsert,传递参数值时,不指定参数名。exec procInsert 8004, 003, 85示例1-9:执行前面创建的存储过程procInsert,传递参数值时,指定参数名。exec procInsert sno = 8005, cno = 001,

6、 grade = 752. 带输出参数的存储过程存储过程的参数可以是输入参数,也可以是输出参数。output关键字用于指明参数为输出参数。(1) 创建带输出参数的存储过程基本语法:create procedure 存储过程名 参数1 数据类型 output, 参数2 数据类型 output, . 参数n 数据类型 outputasbegin SQL语句1 SQL语句2 . SQL语句nend示例2-1:创建一个存储过程procGetDepName,带有1个输出参数DepartmentName,功能:查找学号为“8001”的这个学生所在的院系名称。create procedure procGet

7、DepName DepartmentName nvarchar(20) outputasbegin select DepartmentName = DepartmentName from Department d, Student s where d.DepartmentID = s.DepartmentID and s.sno = 8001end示例2-2:创建一个存储过程procGetMyScore,带有1个输出参数grade,功能:查找学号为“8001”这个学生所选修的课程号为“001”的这门课程的成绩。create procedure procGetMyScore grade floa

8、t outputasbegin select grade = grade from StudentCourse where sno = 8001 and cno = 001end(2) 执行带输出参数的存储过程基本语法:exec 存储过程名 输出参数名1 = 变量名1 output,., 输出参数名n = 变量名n output执行带输出参数的存储过程时,必须先定义一个变量,以存储输出参数返回的值。变量的数据类型应该与输出参数的数据类型相匹配。执行带输出参数的存储过程时,语句本身也必须包含关键字output,以允许将输出参数值返回给变量。示例2-3:执行存储过程procGetDepName,它

9、有1个输出参数DepartmentName,首先定义一个变量DepName,用于接受输出参数返回的值。declare DepName nvarchar(20)exec procGetDepName DepartmentName = DepName outputprint DepName 特别注意:输出参数名在前,变量名在后。示例2-4:执行存储过程procGetMyScore,它有1个输出参数grade。declare my_grade floatexec procGetMyScore grade = my_grade outputprint my_gradeif my_grade 90 pr

10、int 优秀else if (my_grade 70) print 良好else print 及格3. 带输入和输出参数的存储过程在创建存储过程时,既可以带输入参数,同时也可以带输出参数。(1) 创建带输入和输出参数的存储过程 示例3-1:创建一个存储过程procGetMyDepName,它带有1个输入参数sno,还带有1个输出参数DepartmentName,功能:根据输入的学号,找到该生所在的院系,输出院系名称。create procedure procGetMyDepName sno nvarchar(10), DepartmentName nvarchar(20) outputasbe

11、gin select DepartmentName = DepartmentName from Department d, Student s where d.DepartmentID = s.DepartmentID and s.sno = snoend示例3-2:创建一个存储过程procGetYourScore,它带有2个输入参数sno和cno,还带有1个输出参数grade,功能:根据输入的学号和课程号,获取该生所选修的这门课程的成绩,输出该成绩。create procedure procGetYourScore sno nvarchar(10), cno nvarchar(10), gr

12、ade float outputasbegin select grade = grade from StudentCourse where sno = sno and cno = cnoend (2) 执行带输入和输出参数的存储过程 示例3-3:执行前面创建的存储过程procGetMyDepName,它有1个输入参数sno,还有1个输出参数DepartmentName。declare DepName varchar(20)exec procGetMyDepName sno = 8001, DepartmentName = DepName outputprint DepName 示例3-4:执行前面创建的存储过程procGetYourScore,它有2个输入参数s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论