所有分类存储过程与触发器学习教案.pptx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《所有分类存储过程与触发器学习教案.pptx》由会员分享,可在线阅读,更多相关《所有分类存储过程与触发器学习教案.pptx(122页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、所有分类存储所有分类存储(cnch)过程与触发器过程与触发器第一页,共122页。本章主要介绍如何(rh)创建存储过程与使用触发器,包括存储过程简介、创建存储过程、执行存储过程、修改和删除存储过程、触发器简介、创建触发器、修改触发器和删除触发器。第1页/共121页第二页,共122页。通过通过(tnggu)(tnggu)本章的学习,读者可以掌本章的学习,读者可以掌握使用管理控制器和握使用管理控制器和Transact-SQLTransact-SQL创建存创建存储过程或触发器,并应用存储过程或触发储过程或触发器,并应用存储过程或触发器编写器编写SQLSQL语句从而优化查询和提高数据语句从而优化查询和提
2、高数据访问速度。访问速度。第2页/共121页第三页,共122页。8.18.1存储过程简介存储过程简介8.28.2创建存储过程创建存储过程8.38.3执行存储过程执行存储过程8.48.4查看和修改存储过程查看和修改存储过程8.58.5删除存储过程删除存储过程8.68.6触发器简介触发器简介8.78.7创建触发器创建触发器8.88.8修改触发器修改触发器8.98.9删除触发器删除触发器第3页/共121页第四页,共122页。8.1存储存储(cnch)过程简介过程简介在使用在使用Transact-SQLTransact-SQL语言编程的过程语言编程的过程(guchng)(guchng)中,中,可以将某
3、些需要多次调用的实现某个特定任务的代码段可以将某些需要多次调用的实现某个特定任务的代码段编写成一个过程编写成一个过程(guchng)(guchng),将其保存在数据库中,并,将其保存在数据库中,并由由SQLServerSQLServer服务器通过过程服务器通过过程(guchng)(guchng)名来调用它们,名来调用它们,这些过程这些过程(guchng)(guchng)就叫做存储过程就叫做存储过程(guchng)(guchng)。存储过程存储过程(guchng)(guchng)在创建时就被编译和优化,调用一在创建时就被编译和优化,调用一次以后,相关信息就保存在内存中,下次调用时可以直次以后,相
4、关信息就保存在内存中,下次调用时可以直接执行。接执行。第4页/共121页第五页,共122页。存储过程有以下特点:存储过程中可以包含一条或多条Transact-SQL语句。存储过程可以接受输入参数并可以返回输出值。在一个存储过程中可以调用另一个存储过程。存储过程可以返回执行情况(qngkung)的状态代码给调用它的程序。第5页/共121页第六页,共122页。存储过程可以提高应用程序的处理能力,降低编写(binxi)数据库应用程序的难度,同时还可以提高应用程序的效率。存储过程的处理非常灵活,允许用户使用声明的变量,还可以有输入输出参数,返回单个或多个结果集以及处理后的结果值。第6页/共121页第七
5、页,共122页。8.1.1 8.1.1存储过程存储过程(guchng)(guchng)的优点的优点(1)存储过程可以嵌套使用,支持代码重用。(2)存储过程可以接受并使用参数动态执行其中的SQL语句。(3)存储过程比一般(ybn)的SQL语句执行速度快。第7页/共121页第八页,共122页。(4)存储过程具有安全特性(例如权限)和所有权链接(linji),以及可以附加到它们的证书。(5)存储过程允许模块化程序设计。(6)存储过程可以减少网络通信流量。(7)存储过程可以强制应用程序的安全性。第8页/共121页第九页,共122页。8.1.2 8.1.2存储过程存储过程(guchng)(guchng)
6、的类别的类别(1 1)系统存储过程:由系统自动)系统存储过程:由系统自动(zdng)(zdng)创建,系统存创建,系统存储过程出现在每个系统定义数据库和用户定义数据库的储过程出现在每个系统定义数据库和用户定义数据库的syssys构架中。在构架中。在SQLServer2005SQLServer2005中,可将中,可将GRANTGRANT、DENYDENY和和REVOKEREVOKE权限应用于系统存储过程。系统存储权限应用于系统存储过程。系统存储过程主要存储在过程主要存储在mastermaster数据库中并以数据库中并以sp_sp_为前缀。系统为前缀。系统存储过程主要是从系统表中获取信息,从而为数
7、据库系存储过程主要是从系统表中获取信息,从而为数据库系统管理员管理统管理员管理SQLServerSQLServer提供支持。提供支持。(2 2)用户自定义存储过程:是指封装了可重用代码的模)用户自定义存储过程:是指封装了可重用代码的模块或例程,由用户创建,能完成某一特定的功能。可以块或例程,由用户创建,能完成某一特定的功能。可以接受输入参数,返回输出参数。接受输入参数,返回输出参数。(3 3)扩展存储过程)扩展存储过程 第9页/共121页第十页,共122页。8.2创建存储创建存储(cnch)过程过程在SQLServer2005中创建存储过程有两种方法:一种方法是使用(shyng)管理控制器创建
8、存储过程;另一种方法是使用(shyng)Transact-SQL语言创建存储过程。第10页/共121页第十一页,共122页。8.2.1 8.2.1 8.2.1 8.2.1使用企业管理器创建存储使用企业管理器创建存储使用企业管理器创建存储使用企业管理器创建存储(cn(cn(cn(cn ch)ch)ch)ch)过程过程过程过程【例8-1】创建存储过程(guchng)。在SQLServer管理控制台中,选择指定的服务器和数据库,展开数据库中的“可编程性”文件夹,右击其中的“存储过程(guchng)”,在弹出的快捷菜单中选择“新建存储过程(guchng)”选项。第11页/共121页第十二页,共122页
9、。图图8.1用对象用对象(duxing)资源管理器创建存储过程资源管理器创建存储过程第12页/共121页第十三页,共122页。图图8.2在在ManagementStudio中编写存储中编写存储(cnch)过程过程第13页/共121页第十四页,共122页。图图8.3创建创建(chungjin)loving1存储过程存储过程第14页/共121页第十五页,共122页。8.2.2 8.2.2 8.2.2 8.2.2使用使用使用使用(shyng)Transact-SQL(shyng)Transact-SQL(shyng)Transact-SQL(shyng)Transact-SQL语言语言语言语言创建存
10、创建存创建存创建存 储过程储过程储过程储过程CREATEPROCEDURE语句用于在服务器上创建存储过程。CREATEPROCEDURE语句不能与其他SQL语句在单个批处理中组合使用。必须(bx)具有数据库的CREATEPROCEDURE权限。只能在当前数据库中创建存储过程。不要创建任何使用sp_作为前缀的存储过程。第15页/共121页第十六页,共122页。CREATEPROCEDURECREATEPROCEDURE的语法的语法(yf)(yf)形式如下:形式如下:CREATEPROC|PROCEDUREschema_name.procedure_nameCREATEPROC|PROCEDURE
11、schema_name.procedure_nameparametertype_schema_name.data_typeparametertype_schema_name.data_typeVARYING=defaultOUT|OUTPUT,.nWITHENCRYPTIONVARYING=defaultOUT|OUTPUT,.nWITHENCRYPTIONRECOMPILERECOMPILEAS;.n;AS;.n;:=BEGINstatementsEND:=BEGINstatementsEND第16页/共121页第十七页,共122页。其中,各参数的意义如下:schema_name:过程所属架
12、构的名称。procedure_name:新存储过程的名称。parameter:过程中的参数。type_schema_name.data_type:参数以及(yj)所属架构的数据类型。VARYING:指定作为输出参数支持的结果集。仅适用于cursor参数。第17页/共121页第十八页,共122页。default:参数的默认值。OUTPUT:指示参数是输出参数。ENCRYPTION:将CREATE PROCEDURE语句的原始文本(wnbn)加密。RECOMPILE:指示数据库引擎不缓存该存储过程的计划,该过程在运行时编译。:要包含在过程中的一个或多个Transact-SQL语句。第18页/共12
13、1页第十九页,共122页。使用(shyng)参数存储过程通过参数来与调用它的程序通信存储过程通过参数来与调用它的程序通信(tngxn)(tngxn)。在程序调用存储过程时,可以通过输入参数将数据。在程序调用存储过程时,可以通过输入参数将数据传给存储过程,存储过程可以通过输出参数和返回值传给存储过程,存储过程可以通过输出参数和返回值将数据返回给调用它的程序。将数据返回给调用它的程序。执行带输入参数的存储过程时,执行带输入参数的存储过程时,SQLServerSQLServer提供了提供了以下两种传递参数的方式。如果存储过程中有输入参以下两种传递参数的方式。如果存储过程中有输入参数,在执行存储过程时
14、没有给出参数,则系统会显示数,在执行存储过程时没有给出参数,则系统会显示错误提示。错误提示。(1 1)按位置传递。)按位置传递。(2 2)通过参数名传递)通过参数名传递第19页/共121页第二十页,共122页。通过定义(dngy)输出参数,可以从存储过程中返回一个或多个值。定义(dngy)输出参数需要在参数定义(dngy)的数据类型后使用关键字OUTPUT,或简写为OUT。第20页/共121页第二十一页,共122页。【例8-2】使用(shyng)Transact-SQL语言创建存储过程。第21页/共121页第二十二页,共122页。图图8.4创建创建loving存储存储(cnch)过程过程第22
15、页/共121页第二十三页,共122页。例:创建一个带有例:创建一个带有SELECTSELECT语句的简单过程,该存储过程返语句的简单过程,该存储过程返回回(fnhu)(fnhu)所有员工姓名,所有员工姓名,EmailEmail地址,电话等。该存储地址,电话等。该存储过程不使用任何参数过程不使用任何参数程序清单如下:程序清单如下:USEadventureworksUSEadventureworksGOGOCREATEPROCEDUREau_infor_allCREATEPROCEDUREau_infor_allASASSELECTlastname,firstname,emailaddress,p
16、honeSELECTlastname,firstname,emailaddress,phoneFROMperson.contactFROMperson.contactGOGO第23页/共121页第二十四页,共122页。例:创建一个存储过程,以简化对例:创建一个存储过程,以简化对scsc表的数据表的数据(shj)(shj)添加添加工作,使得在执行该存储过程时,其参数值作为数据工作,使得在执行该存储过程时,其参数值作为数据(shj)(shj)添加到表中。添加到表中。程序清单如下:程序清单如下:CREATEPROCEDUREdbo.pr1_sc_insCREATEPROCEDUREdbo.pr1_s
17、c_insParam1char(10),Param2char(2),Param3realParam1char(10),Param2char(2),Param3realASASBEGINBEGINinsertintosc(sno,cno,score)insertintosc(sno,cno,score)values(Param1,Param2,Param3)values(Param1,Param2,Param3)ENDEND第24页/共121页第二十五页,共122页。例:下面的存储过程从表例:下面的存储过程从表person.contactperson.contact中返回指定的一中返回指定的一些
18、员工姓名及其电话。该存储过程对传递些员工姓名及其电话。该存储过程对传递(chund)(chund)的的参数进行模式匹配。如果没有提供参数,则使用预设的参数进行模式匹配。如果没有提供参数,则使用预设的默认值(姓氏以字母默认值(姓氏以字母D D开头)开头)程序清单如下:程序清单如下:GOGO第25页/共121页第二十六页,共122页。USEAdventureWorks;USEAdventureWorks;GOGOCREATEPROCEDUREau_infor2CREATEPROCEDUREau_infor2lastnamevarchar(40)=D%,firstnamevarchar(20)=%l
19、astnamevarchar(40)=D%,firstnamevarchar(20)=%ASASSELECTfirstname,lastname,phoneSELECTfirstname,lastname,phoneFROMperson.contactFROMperson.contactWHEREfirstnameLIKEfirstnameANDlastnameLIKElastnameWHEREfirstnameLIKEfirstnameANDlastnameLIKElastname第26页/共121页第二十七页,共122页。例:以下示例显示有一个输入参数和一个输出参数的存储过程。存储过程中的
20、第一个参数sname将接收由调用程序指定的输入值(学生姓名(xngmng),第二个参数sscore(成绩)将用于将该值返回调用程序。SELECT语句使用sname参数获取正确的sscore值,并将该值分配给输出参数。第27页/共121页第二十八页,共122页。程序清单如下(rxi):CREATEPROCEDUREs_scoresnamechar(8),sscorerealoutputASSELECTsscore=scorefromscjoinsons.sno=sc.snowheresn=snameGO第28页/共121页第二十九页,共122页。例:创建一个带有参数的简单存储过程,例:创建一个带
21、有参数的简单存储过程,从视图中返回指定的雇员(提供名和姓)从视图中返回指定的雇员(提供名和姓)及其职务和部门名称及其职务和部门名称(mngchng)(mngchng),该存,该存储过程接受与传递的参数精确匹配的值储过程接受与传递的参数精确匹配的值程序清单如下:程序清单如下:第29页/共121页第三十页,共122页。USEAdventureWorks;USEAdventureWorks;GOGOCREATEPROCEDUREGetEmployeesCREATEPROCEDUREGetEmployeeslastnamevarchar(40),lastnamevarchar(40),firstnam
22、evarchar(20)firstnamevarchar(20)ASASSELECTLastName,FirstName,JobTitle,SELECTLastName,FirstName,JobTitle,DepartmentDepartmentFROMHumanResources.vEmployeeDepartmentFROMHumanResources.vEmployeeDepartmentWHEREFirstName=firstnameANDWHEREFirstName=firstnameANDLastName=lastname;LastName=lastname;GOGO第30页/共
23、121页第三十一页,共122页。8.3执行执行(zhxng)存储存储过程过程 1 1通过通过ExecuteExecute或或ExecExec语句执行语句执行 EXECUTE EXECUTE语句用于执行存储在服务器语句用于执行存储在服务器上的存储过程,也可以上的存储过程,也可以(ky)(ky)简写成简写成EXECEXEC语句。语句。第31页/共121页第三十二页,共122页。语法(yf):EXECUTEreturn_status=procedure_name|procedure_name_varparameter=value|variableOUTPUT|DEFAULT,.n第32页/共121页
24、第三十三页,共122页。其中,各选项的含义如下:EXECUTE:执 行 存 储 过 程(guchng)的命令关键字。return_status:是一个可选的整 型 变 量,保 存 存 储 过 程(guchng)的返回状态。procedure_name:指定执行的存储过程(guchng)的名称。procedure_name_var:是局部定义 变 量 名,代 表 存 储 过 程(guchng)名称。parameter:是在创建存储过程(guchng)时 定 义 的 过 程(guchng)参数。第33页/共121页第三十四页,共122页。【例8-3】调用Exec语句执行存储(cnch)过程。第34
25、页/共121页第三十五页,共122页。图图8.5执行执行loving存储存储(cnch)过程结果过程结果第35页/共121页第三十六页,共122页。例:例:执行存储过程执行存储过程au_infor_allau_infor_all。au_infor_allau_infor_all存储过程可以通过以下方法执行:存储过程可以通过以下方法执行:EXECUTEEXECUTE(EXECEXEC)au_infor_allau_infor_all例:例:使用使用EXECUTEEXECUTE命令命令(mnglng)(mnglng)传递参数,传递参数,执行存储过程执行存储过程pr1_sc_inspr1_sc_in
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 所有 分类 存储 过程 触发器 学习 教案
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内