数据库:SQL存储过程_第1页
数据库:SQL存储过程_第2页
数据库:SQL存储过程_第3页
数据库:SQL存储过程_第4页
数据库:SQL存储过程_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、存储过程,概述,问题要把某完成功能的SQL做成类似C语言的函数,供需要时调用,如何做?什么是存储过程?是一组被编译在一起的T-SQL语句的集合,它们被集合在一起以完成一个特定的任务。存储过程的分类系统存储过程扩展存储过程(提供从SQLServer到外部程序的接口,以便进行各种维护活动)用户自定义的存储过程,存储过程的作用,从以下几个方面考虑:模块化编程:创建一个存储过程存放在数据库中后,就可以被其他程序反复使用。快速执行:存储过程第一次被执行后,就驻留在内存中。以后执行就省去了重新分析、优化、编译的过程。减少网络通信量有了存储过程后,在网络上只要一条语句就能执行一个存储过程。安全机制通过隔离和

2、加密的方法提高了数据库的安全性,通过授权可以让用户只能执行存储过程而不能直接访问数据库对象。,存储过程和视图的比较,创建、执行简单的存储过程,创建格式:CREATEPROCEDUREproc_nameASSql_statements【问题】创建一个名为math_Student的存储过程,返回student表中数学系的学生信息执行格式:EXEC|EXECUTEproc_name,创建、执行简单的存储过程,创建格式:CREATEPROCEDUREproc_nameASSql_statementsuse学生选课gocreateproceduremath_studentasselect*fromStu

3、dentwhereSdept=ma,练习1,创建一个名为StuBy2009的存储过程,返回2009级的所有学生的信息执行该存储过程,并使用管理器查看该存储过程的定义,创建带输入参数的存储过程,创建格式:CREATEPROCEDUREproc_namepara_namedatatype=default,ASSql_statements【例】创建一个名为StuBySno的存储过程,该存储过程根据给定的学号显示相应学生的信息,创建带输入参数的存储过程,创建格式:CREATEPROCEDUREproc_namepara_namedatatype=default,ASSql_statementsuse学

4、生选课gocreateprocedureStuBySnoStudentSnochar(10)asselect*fromStudentwhereSNO=StudentSno,创建带输入参数的存储过程,【例】创建一个名为StuBySno的存储过程,该存储过程根据给定的学号显示相应学生的信息CREATEprocedureStuBySnoStudentSnochar(10)=NULLasIFStudentSnoISNULLBEGINPRINT必须提供一个数值作参数!RETURN13ENDIFNOTEXISTS(select*fromStudentwhereSNO=StudentSno)BEGINPRI

5、NT没有满足条件的记录!RETURN-103ENDselect*fromStudentwhereSNO=StudentSnoRETURN0,执行带输入参数的存储过程,执行格式:EXECproc_namepara_name=value,指定参数名的格式不指定参数名的格式思考:当缺省参数执行存储过程时,如何处理?,练习2,创建一个名为ScBySnoCno的存储过程,根据给定的学生学号和课程号,显示相应学生的选课信息use学生选课gocreateprocedureScBySnoCnoStudentSnochar(10),CourseCnoaschar(10)asselect*fromSCwhereS

6、NO=StudentSnoandCno=CourseCno,带输出参数的存储过程,定义格式同上,同时指明OUTPUT关键字CREATEPROCEDUREproc_namepara_namedatatype=defaultoutput,ASSql_statements执行方法:用output指明输出参数【例】创建存储过程P_DeptNum,要求能根据用户给定的系代码,统计该系的人数,并将人数通过输出变量返回给用户。如要查询纱代码为MA的学生人数,如何调用存储过程,带输出参数的存储过程,定义:use学生选课gocreateprocedureP_DeptNumDeptIdchar(15),DeptN

7、umsmallintOUTPUTasselectDeptNum=COUNT(*)fromStudentwhereSdept=DeptId调用:DECLARENUMSMALLINTEXECP_DeptNumDEPTID=MA,DEPTNUM=NUMOUTPUTPRINTNUM,【练习】创建存储过程Cou_credit,要求能根据用户给定的学分值,统计满足该学分值的课程数目,并把它返回给调用程序。如要统计2个学分的课程门数,该如何调用上述存储过程。【练习】创建名为mod_credit的存储过程,能修改用户指定课程号的课程学分值,修改值也由用户指定。,修改存储过程,修改格式:ALTERPROCEDUREproc_namepara_namedatatype=default,WITHENCRYPTIONASSql_statements,重命名、删除存储过程,重命名:sp_rename原存储过程名,新存储过程名删除格式:DROPPROCEDUREproc_name,重编译处理(RECOMPILE),在创建时指明重编译添加WITHRECOMPILE选项在执行时指明重编译使用EXECUTE时指定WIT

温馨提示

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

评论

0/150

提交评论