




已阅读5页,还剩45页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.,第8章存储过程,本章知识点,存储过程概述存储过程分类存储过程执行过程创建存储过程修改及删除存储过程调用存储过程,存储过程概述,场景在学生成绩管理系统中,系统用户经常查询学生考试信息,包括:学生名字、所属班级、授课老师、考试科目、考试分数等信息。由于该查询在程序中很多地方都要用到,而且使用频率非常高,因此,开发人员想用一种可以重用而又高性能的方式来实现。,存储过程概述,问题分析所查询的信息分布在student、score、course、teacher四张表中,需要用连接查询,查询代码如下:,SELECT*FROMSTUDENTINNERJOINSCOREONSTUDENT.SNO=SCORE.SNOINNERJOINCOURSEONSCORE.CNO=COURSE.CNOINNERJOINTEACHERONCOURSE.TNO=TEACHER.TNOWHEREGROPBYHAVINGORDERBY,存储过程概述,问题分析存在的问题该查询功能在程序中的很多地方使用,因此同样一段代码要重复写多遍,如果查询信息有所改变,则要改变很多地方,给程序员带来一定的麻烦。系统使用人员每次提交查询,数据库服务器会对查询语句进行编译、解析和执行,而且是反复做同样的事情,浪费服务器资源。,存储过程概述,解决问题解决方案常规SQL语句能实现查询功能,但存在一些问题,如:代码复用率低、可维护性差和性能低,因此SQLSERVER给出了一种可重用、易维护和高效的解决方案存储过程(StoredProcedure),存储过程概述,定义将多次重复执行的实现特定功能的代码段编写成一个“过程”,将其保存在数据库中,并由SQLServer服务器通过其过程名来进行调用,这样的“过程”就叫做存储过程。特征存储过程是一个SQL语句组合。在创建时进行预编译,首次被调用时进行解析,以后再被调用,则可直接执行存储过程实现了模块化编程。被创建后可以被多个用户共享和重用,有效的减少网络流量,提高SQL语句的执行效率,提高数据库的安全性能,存储过程概述,优点存储过程允许标准组件式编程。存储过程能够实现较快的执行速度。存储过程能够减少网络流量。存储过程可被作为一种安全机制来充分利用。,创建存储过程,基本语法CREATEPROC|PROCEDUREprocedure_name(parameterdata_typeVARYING=defaultOUT|OUTPUT,.WITHENCRYPTIONASBEGIN,.END,创建存储过程,基本语法:参数说明procedure_name:过程名称过程的参数data_type:parameter:参数的数据类型VARYING:指定作为输出参数支持的结果集,仅适用于cursor参数DEFAULT:参数的默认值OUTPUT:指示参数是输出参数ENCRYPTION:将CREATEPROCEDURE语句的原始文本加密AS:指明该存储过程将要执行的动作:要包含在过程中的一个或多个T-SQL语句,创建存储过程,执行代码,CREATEPROCEDUREprcListClassesWITHENCRYPTIONASBEGINSELECTc.classCourseName,d.depName,c.classTeacherName,c.classStartTime,cr.crBuildingName,cr.crRoomNo,c.classLimitNum,c.classExistNum,c.classCreditFROMClassescJOINDepartmentdONc.classdepNo=d.depNoJOINClassRoomcrONc.classRoomNo=cr.crNoWHEREclassCourseName=计算机网络END,执行存储过程,语法EXECUTE|EXECproc_name,Sp_helpsp_helptext注意在执行存储过程时,如果语句是一个批处理中的第一个语句,则不一定要指定EXECUTE或EXEC关键字。如果存储过程带有参数,则在执行过程时,需带上相应的参数。,实例分析二:存储过程用输出参数返回值,课堂练习一:音乐信息管理系统中创建存储过程,磁存储过程能够查询出每一种歌曲的平均价格。课堂练习二:音乐信息管理系统中创建存储过程,磁存储过程能够查询出每一类歌曲中最贵的那一首。课堂练习三:在学生成绩管理系统中,需要建立一个存储过程,此存储过程能够查询出每一名同学的平均分数。课堂练习四:在学生成绩管理系统中,需要建立一个存储过程,此存储过程能够查询出每一位老师所带的学生的个数。,执行存储过程,执行存储过程的步骤编译阶段在创建时,系统对其语句进行语法检查。若有语法错误则创建失败,否则创建成功解析阶段在首次执行时,从系统中读取存储过程,并检查引用的数据库对象是否存在。若存在找不到的数据库对象则产生错误,否则进入执行阶段执行阶段依次执行存储过程中的SQL语句,存储过程概述,存储过程分类用户定义的存储过程T-SQL存储过程CLR存储过程系统存储过程临时存储过程远程存储过程,存储过程概述,查看存储过程查看数据库的的存储过程也可以通过两种方法:利用代码命令利用ManagerStudio利用代码命令查看存储过程sp_helpproc_name命令查看名为proc_name的存储过程。sp_helptextproc_name命令查看名为proc_name的存储过程的详细代码。,存储过程概述,删除存储过程两种方式在ManagementStudio中选中要删除的存储过程,右键单击“删除”命令即可。如下图。使用DROP命令DROPPROCPROC_ClassInfo,修改存储过程,使用ALTER例子:ALTERPROCEDUREprcListClasses()ASBEGINselectc.classNo,c.classCourseName,c.classStartTime,c.classTeacherName,cr.crBuildingName,cr.crRoomNofromClassescjoinClassRoomcronc.classRoomNo=cr.crNoEND,存储过程的输入和输出,参数是存储过程与外界进行交互的一种途径存储过程通过输入参数和输出参数与外界进行交互.存储过程的数据传递方式:输入参数调用者向存储过程输入的数据值输出参数OUTPUT存储过程向调用者返回的数据值RETURN语句向外返回int型数据,实例分析一:存储过程中使用输入参数,提出问题学生成绩管理系统,用户想更灵活的查询指定学生的相关信息,利用简单的存储过程缺乏灵活性,难以满足用户需求,系统应该能够让用户查询指定课程名称课程相关信息。,实例分析一,分析问题步骤1:确定存储过程所需输入变量步骤2:创建带参数的存储过程步骤3:执行存储过程,验证其是否能输入参数,实例分析一,问题求解步骤1:确定存储过程所需输入变量确定参数名:classCourseName确定参数的数据类型:varchar(20)注意在确定输入参数数据类型时,最好和数据库定义的相关字段匹配,实例分析一,问题求解步骤2:创建带参数的存储过程,CREATEPROCEDUREgetstuByname(stuNamevarchar(20)ASBEGINSELECT*FROMstudentWHEREsname=stunameEND,实例分析一,问题求解步骤3:执行存储过程,验证其是否能输入参数EXECstuByName王芳,实例分析二:存储过程用输出参数返回值,课堂练习一:音乐信息管理系统中创建存储过程,磁存储过程能够查询出某类歌曲的平均价格。课堂练习二:音乐信息管理系统中创建存储过程,磁存储过程能够查询在某个价格范围内的歌曲的信息。课堂练习三:在学生成绩管理系统中,需要建立一个存储过程,此存储过程能够将指定学生的指定课程分数提高指定的分数。注意:在存储过程总传入参数的时候,只能是变量或者常量。不允许使用函数动态计算课堂练习四:在学生成绩管理系统中,需要建立一个存储过程,此存储过程能够将指定的学生信息插入到student表中。,实例分析二:存储过程用输出参数返回值,提出问题在学生成绩管理系统中,需要建立一个存储过程,此存储过程能够查询出指定课程的平均分、最高分和最低分并将这些查询出的值返回。,实例分析二,分析问题步骤1:确定存储过程所需输入变量步骤2:创建带参数的存储过程步骤3:执行存储过程,验证其是否能输入和输出参数,实例分析二,问题求解步骤1:确定存储过程所需输入变量确定参数-输入参数:cnamevarchar(20)-指定课程名称-输出参数:avgintOUTPUTmaxintOUTPUTminfloatOUTPUT-返回指定课程的信息注意:输出参数必须要用OUTPUT标识,实例分析二,问题求解步骤2:创建带参数的存储过程,CREATEPROCEDUREprcClass_Student(cnamevarchar(20)=,avgfloatOUTPUT,maxintOUTPUT,minintOUTPUT)ASBEGINSELECTavg=avg(degree),max=max(degree),min=min(degree)FROMScoreGroupbycnameHavingcname=cnameEND,实例分析二,问题求解步骤3:验证存储过程是否能输入和输出参数,查询“王芳同学的选课率。,DECLAREavgfloat,maxint,minintEXECprcClass_Student操作系统,avgOUTPUT,maxOUTPUT,minOUTPUT,实例分析二,结果分析代码通过调用存储过程prcClass_Student,传入参数“操作系统”,返回该课程的选课信息。输出参数和用来接收返回数据的变量的数据类型和位置必须匹配,并且用来接收返回值的参数也必须标识OUTPUT。实例中存储过程用输入参数和输出参数与外部进行数据交互,利用输入和输出参数能给程序带来更大的灵活性。,实例分析二:存储过程用输出参数返回值,课堂练习一:音乐信息管理系统中创建存储过程,磁存储过程能够返回某位歌手所唱的歌曲名字,价格和类别。课堂练习二:音乐信息管理系统中创建存储过程,磁存储过程能够所有歌曲中的最贵的,最便宜的和均价。课堂练习三:在学生成绩管理系统中,需要建立一个存储过程,此存储过程能够返回出指定张旭老师教的科目中最低分的学生姓名和分数。课堂练习四:在学生成绩管理系统中,需要建立一个存储过程,此存储过程能够返回指定学生的指定科目的的分数。,存储过程用默认值参数,通过存储过程的输出参数,可以对外部调用对象返回一个或多个值,同样在存储过程中还有另一种方式可以返回值使用RETURN关键字。使用RETURN只能返回单个值,并且是整型值。它通常返回下列值:操作过程中受影响的行数错误编码插入到IDENTITY列中的值,存储过程用RETURN返回值,通过存储过程的输出参数,可以对外部调用对象返回一个或多个值,同样在存储过程中还有另一种方式可以返回值使用RETURN关键字。使用RETURN只能返回单个值,并且是整型值。它通常返回下列值:操作过程中受影响的行数错误编码插入到IDENTITY列中的值,实例分析三,提出问题创建存储过程以查看指定老师所授选修课的信息,并向调用对象返回一个消息,表明查询结果。,实例分析三,分析问题步骤1:确定使用RETURN返回单个值,作为输出消息步骤2:创建存储过程步骤3:执行存储过程,验证其功能,实例分析三,问题求解RETURN语句的语法为:RETURNinteger_expression步骤1:确定使用RETURN返回单个值,作为输出消息RETURN1表示查询成功,找到所需记录RETURN0表示查询失败,没有发现有效记录,实例分析三,问题求解步骤2:创建存储过程,CREATEPROCEDUREprcListClassesByTeacherName(classTeacherNamevarchar(16)ASBEGINIFexists(SELECT*FROMCOURSEWHEREclassTeacherName=classTeacherName)BEGINRETURN1ENDELSEBEGINRETURN0ENDEND,实例分析三,问题求解步骤3:执行存储过程,验证其功能DECLAREresultintEXECresult=prcListClassesByTeacherName朱紫英IF(result=1)PRINT存在相关信息ELSEPRINT没有相关信息注意:RETURN不能返回NULL。若试图返回NULL,将生成警告信息并返回0,存储过程的高级应用,存储过程的高级应用包括:存储过程间的调用在存储过程中使用游标,实例分析四:存储过程间的调用,提出问题现在需要建立一个存储过程,此存储过程在场景一的基础上能够查询查看多门课程的相关信息。,实例分析四,分析问题步骤1:创建调用现有存储过程的存储过程步骤2:执行存储过程,验证其功能,实例分析四,问题求解步骤1:创建调用现有
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 谈新质生产力
- 赋能新质生产力:发展动力与支撑
- 中学生新质生产力科普
- 安全教育手册讲解
- 2025年实验医学实验室医学常规检验操作规范试题答案及解析
- 2025年康复理疗学专业素养检测试卷答案及解析
- 2025年急诊医学急救抢救演练答案及解析
- 2025年心理学心理咨询知识与技巧应用考试答案及解析
- 2025年放射科医学影像观察与判断模拟试卷答案及解析
- 2025年神经科神经解剖与生理学知识检测答案及解析
- 鼾症的治疗与护理
- 超声科规培生入科教育大纲
- 脑疝的观察与护理
- 腹腔热灌注护理课件
- 消防装备维护保养课件
- 乡村调解员课件
- 2025初中语文新教材培训
- 体重管理宣教课件
- 美术培训学期课件
- 厂房居间协议书范本
- 市场摆渡车管理制度
评论
0/150
提交评论