欢迎来到天天文库
浏览记录
ID:56373773
大小:387.50 KB
页数:19页
时间:2020-06-14
《数据库:SQL存储过程.ppt》由会员上传分享,免费在线阅读,更多相关内容在PPT专区-天天文库。
1、存储过程概述问题要把某完成功能的SQL做成类似C语言的函数,供需要时调用,如何做?什么是存储过程?是一组被编译在一起的T-SQL语句的集合,它们被集合在一起以完成一个特定的任务。存储过程的分类系统存储过程扩展存储过程(提供从SQLServer到外部程序的接口,以便进行各种维护活动)用户自定义的存储过程存储过程的作用从以下几个方面考虑:模块化编程:创建一个存储过程存放在数据库中后,就可以被其他程序反复使用。快速执行:存储过程第一次被执行后,就驻留在内存中。以后执行就省去了重新分析、优化、编译的过程。减少网络通信量有了存储过程后,在网络上只要
2、一条语句就能执行一个存储过程。安全机制通过隔离和加密的方法提高了数据库的安全性,通过授权可以让用户只能执行存储过程而不能直接访问数据库对象。存储过程和视图的比较视图存储过程语句只能是SELECT语句可以包含程序流、逻辑以及SELECT语句输入、返回结果不能接受参数,只能返回结果集可以有输入输出参数,也可以有返回值典型应用多个表格的连接查询完成某个特定的较复杂的任务创建、执行简单的存储过程创建格式:CREATEPROCEDUREproc_nameASSql_statements【问题】创建一个名为math_Student的存储过程,返回st
3、udent表中数学系的学生信息执行格式:EXEC
4、EXECUTEproc_name创建、执行简单的存储过程创建格式:CREATEPROCEDUREproc_nameASSql_statementsuse学生选课gocreateproceduremath_studentasselect*fromStudentwhereSdept='ma'练习1创建一个名为StuBy2009的存储过程,返回2009级的所有学生的信息执行该存储过程,并使用管理器查看该存储过程的定义创建带输入参数的存储过程创建格式:CREATEPROCEDUREproc_nam
5、e@para_namedatatype[=default],…ASSql_statements【例】创建一个名为StuBySno的存储过程,该存储过程根据给定的学号显示相应学生的信息创建带输入参数的存储过程创建格式:CREATEPROCEDUREproc_name@para_namedatatype[=default],…ASSql_statementsuse学生选课gocreateprocedureStuBySno@StudentSnochar(10)asselect*fromStudentwhereSNO=@StudentSno创建带
6、输入参数的存储过程【例】创建一个名为StuBySno的存储过程,该存储过程根据给定的学号显示相应学生的信息CREATEprocedureStuBySno@StudentSnochar(10)=NULLasIF@StudentSnoISNULLBEGINPRINT'必须提供一个数值作参数!'RETURN13ENDIFNOTEXISTS(select*fromStudentwhereSNO=@StudentSno)BEGINPRINT'没有满足条件的记录!'RETURN-103ENDselect*fromStudentwhereSNO=@St
7、udentSnoRETURN0执行带输入参数的存储过程执行格式:EXECproc_name[@para_name=]value,…指定参数名的格式不指定参数名的格式思考:当缺省参数执行存储过程时,如何处理?练习2创建一个名为ScBySnoCno的存储过程,根据给定的学生学号和课程号,显示相应学生的选课信息use学生选课gocreateprocedureScBySnoCno@StudentSnochar(10),@CourseCnoaschar(10)asselect*fromSCwhereSNO=@StudentSnoandCno=@Co
8、urseCno带输出参数的存储过程定义格式同上,同时指明OUTPUT关键字CREATEPROCEDUREproc_name@para_namedatatype[=default][output],…ASSql_statements执行方法:用output指明输出参数【例】创建存储过程P_DeptNum,要求能根据用户给定的系代码,统计该系的人数,并将人数通过输出变量返回给用户。如要查询纱代码为’MA’的学生人数,如何调用存储过程带输出参数的存储过程定义:use学生选课gocreateprocedureP_DeptNum@DeptIdcha
9、r(15),@DeptNumsmallintOUTPUTasselect@DeptNum=COUNT(*)fromStudentwhereSdept=@DeptId调用:DECLARE@NUM
此文档下载收益归作者所有