第11章 函数和游标ppt课件.ppt

第11章 函数和游标ppt课件.ppt

ID:59197626

大小:1.17 MB

页数:50页

时间:2020-09-26

第11章 函数和游标ppt课件.ppt_第1页
第11章 函数和游标ppt课件.ppt_第2页
第11章 函数和游标ppt课件.ppt_第3页
第11章 函数和游标ppt课件.ppt_第4页
第11章 函数和游标ppt课件.ppt_第5页
资源描述:

《第11章 函数和游标ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、数据库应用李政伟第11章函数和游标函数是由一个或多个SQL语句组成的子程序,它可以用于封装代码提供代码共享的功能。内置函数用户自定义函数如果需要对结果集中的数据进行逐行、逐列的处理,就需要游标。11.1用户自定义函数11.1.1基本概念11.1.2创建和调用标量函数11.1.3创建和调用内联表值函数11.1.4创建和调用多语句表值函数11.1.5查看和修改用户自定义函数11.1.6删除用户自定义函数31.基本概念可以扩展数据操作的功能,在概念上类似于一般的程序设计语言中定义的函数。SQLServer

2、支持三种用户自定义函数:标量函数内联表值函数多语句表值函数411.2创建和调用标量函数标量函数是返回单个数据值的函数。定义标量函数的语法:CREATEFUNCTION[拥有者名.]函数名([{@参数名[AS]标量数据类型[=default]}[,...n]])RETURNS返回值类型[AS]BEGIN函数体RETURN标量表达式END5示例例1.创建计算立方体的体积的标量函数,此函数有三个输入参数,分别为立方体的长、宽和高,类型均为整型,函数的返回值的类型也为整型。CREATEFUNCTIONdbo

3、.CubicVolume(@CubeLengthint,@CubeWidthint,@CubeHeightint)RETURNSintASBEGINRETURN(@CubeLength*@CubeWidth*@CubeHeight)END6示例例2.创建统计指定学生(学号)的选课门数的标量函数。CREATEFUNCTIONdbo.f_Count(@snochar(7))RETURNSintASBEGINDECLARE@xintSELECT@x=count(*)FROMSCWHERESNO=@snoR

4、ETURN@xEND7示例例3.创建查询指定课程(课程号)的考试平均成绩的标量函数,平均成绩保留到小数点后2位。CREATEFUNCTIONdbo.f_AvgGrade(@cnovarchar(20))RETURNSNUMERIC(4,2)ASBEGINDECLARE@avgNUMERIC(4,2)SELECT@avg=CAST(AVG(CAST(GradeASreal))ASNUMERIC(4,2))FROMSCWHERECno=@cnoRETURN@avgEND8例4.调用例2定义的函数,查询“

5、计算机系”的学生姓名和该系学生的选课门数。SELECTSnameAS姓名,dbo.f_Count(Sno)AS选课门数FROMStudentWHEREDept='计算机系'示例9示例例5.调用例3定义的函数,查询第2-4学期开设的每门课程的课程名、开课学期和考试平均成绩,将查询结果按学期升序排序。SELECTCnameAS课程名,SemesterAS开课学期,dbo.f_AvgGrade(Cno)AS平均成绩FROMCourseWHERESemesterBETWEEN2AND4ORDERBYSeme

6、sterASC1011.1.3创建和调用内联表值函数内联表值函数的返回值是一个表,该表的内容是一个查询语句的结果。定义内联表值函数的语法:CREATEFUNCTION[拥有者名.]函数名([{@参数名[AS]标量数据类型[=default]}[,...n]])RETURNSTABLE[AS]RETURN[(]select语句[)]11示例例6.创建查询指定系的学生学号、姓名和考试平均成绩的内联表值函数。CREATEFUNCTIONdbo.f_SnoAvg(@deptchar(20))RETURNST

7、ABLEASRETURN(SELECTS.Sno,Sname,Avg(Grade)ASAvgGradeFROMStudentSJOINSCONS.Sno=SC.SnoWHEREDept=@deptGROUPBYS.Sno,Sname)12示例例7.创建查询选课门数高于指定门数的学生的姓名、所在系以及所选的课程名和开课学期。CREATEFUNCTIONdbo.f_MoreCount(@cint)RETURNSTABLEASRETURN(SELECTSname,Dept,Cname,SemesterFR

8、OMStudentSJOINSCONS.Sno=SC.SnoJOINCourseCONC.Cno=SC.CnoWHERES.SnoIN(SELECTSnoFROMSCGROUPBYSnoHAVINGCOUNT(*)>@c))13调用内联表值函数对内联表值函数的使用与视图非常类似,需要放置在查询语句的FROM子句部分,很象是带参数的视图。例8.调用例6定义的内联表值函数,查询计算机系学生的学号、姓名和考试平均成绩。SELECT*FROMdbo.f_SnoAvg('计算机

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。