第8章存储过程与触发器.ppt

上传人:夺命阿水 文档编号:751448 上传时间:2023-11-07 格式:PPT 页数:39 大小:1.41MB
返回 下载 相关 举报
第8章存储过程与触发器.ppt_第1页
第1页 / 共39页
第8章存储过程与触发器.ppt_第2页
第2页 / 共39页
第8章存储过程与触发器.ppt_第3页
第3页 / 共39页
第8章存储过程与触发器.ppt_第4页
第4页 / 共39页
第8章存储过程与触发器.ppt_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《第8章存储过程与触发器.ppt》由会员分享,可在线阅读,更多相关《第8章存储过程与触发器.ppt(39页珍藏版)》请在课桌文档上搜索。

1、第8章 存储过程与触发器,2023/11/7,2/39,将一些T-SQL语句打包成一个数据库对象(存储过程或触发器)并存储在SQL Server服务器上,等到需要时,就调用或触发这些T-SQL语句包。本章教与学的建议:教师使用4课时边讲解示例,边安排练习,学生在教师的指导下使用4课时在课内练习和检查。本章目标是通过学习,能够实施存储过程和触发器应用管理。,第8章 存储过程与触发器,2023/11/7,3/39,本章学习任务 存储过程概述 存储过程定义与特点、类型 创建和执行存储过程 创建和执行带参数或不带参数的存储过程、创建和使用扩展存储过程 修改和删除存储过程 查看、修改、删除存储过程 创建

2、和管理触发器 触发器概述、创建触发器、管理触发器,第8章 存储过程与触发器,2023/11/7,4/39,存储过程的概述,当开发一个应用程序时,为了易于修改和扩充方便,我们经常会将负责不同功能的语句集中起来而且按照用途分别独立放置,以便能够反复调用,而这些独立放置且拥有不同功能的语句,即是“过程”(Procedure)。SQL Server的存储过程是一组完成特定功能的T-SQL语句集,经编译后以特定的名称存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行存储过程。,2023/11/7,5/39,存储过程特点与类型,存储过程特点允许模块化的程序设计更快的执行速

3、度有效降低网络流量较好的安全机制,存储过程类型系统存储过程本地存储过程临时存储过程远程存储过裎扩展存储过程,2023/11/7,6/39,不带参数的存储过程,使用对象资源管理器创建存储过程使用SQL命令创建存储过程CREATE PROCEDURE procedure_nameAS sql_statementsprocedure_name为所创建的存储过程的名字;sql_statements为在存储过程中需要执行的数据库操作。,2023/11/7,7/39,不带参数的存储过程,2023/11/7,8/39,不带参数的存储过程,2023/11/7,9/39,带参数的存储过程,存储过程通过参数来与调

4、用它的程序通信。在程序调用存储过程时,可以通过输入参数将数据传给存储过程,存储过程可以通过输出参数和返回值将数据返回给调用它的程序。创建带参数的存储过程的语法格式CREATE PROCEDURE procedure_nameparameter data_type=DEFAULTOUTPUT,nWITHRECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTINAS sql_ statements,2023/11/7,10/39,带参数的存储过程,使用参数名传送参数值 EXECUTE procedure_name parameter_name=value,nprocedure

5、_name为存储过程名;parameter_name为输入参数名;value为传递给输入参数的值。如果存储过程中有输入参数,在执行存储过程时没有给出参数,则系统会显示错误提示。,2023/11/7,11/39,带参数的存储过程,2023/11/7,12/39,带参数的存储过程,2023/11/7,13/39,带参数的存储过程,按位置传送参数值 EXECUTE proc_name value1,value2,proc_name为存储过程名;value1,value2,为传递给各输入参数的值。具有默认值的存储过程例如,针对一个表,创建一个存储过程,执行存储过程时将向数据表插入一条记录,新记录的值由

6、参数提供,如果未提供某个字段的值时,由参数的默认值代替。,2023/11/7,14/39,带参数的存储过程,2023/11/7,15/39,带参数的存储过程,2023/11/7,16/39,带参数的存储过程,创建具有返回值的存储过程parameter_name datatype=default OUTPUT,nparameter_name存储过程的输出参数名,必须以符号为前缀。存储过程通过该参数返回结果。datatype指明输出参数的数据类型,它既可以是系统提供的数据类型,也可以是用户自定义的数据类型,但必须是除text和image以外的数据类型。default指定输出参数的默认值。OUTPU

7、T指明参数为输出参数。,2023/11/7,17/39,带参数的存储过程,2023/11/7,18/39,带参数的存储过程,执行具有返回值的存储过程EXECUTE return_status=procedure_name|procudure_name_varparameter_name=value|variableOUTPUT,nWITH RECOMPILEprocedure_name:需执行的存储过程的名字;parameter_name=value|variable为输入参数传递值;parameter_name=variable OUTPUT为传递给输出参数的变量,variable用来存放返

8、回参数的值。OUTPUT指明这是一个输出传递参数,与响应的存储过程中的输出参数相匹配。,2023/11/7,19/39,带参数的存储过程,2023/11/7,20/39,带参数的存储过程,存储过程的重编译处理 存储过程的处理在创建存储过程时,SQL Server需要对存储过程中的语句进行语法检查。如果存储过程定义中存在语法错误,将返回错误,并且将不能创建该存储过程。如果语法正确,则存储过程的文本将存储在syscomments系统表中。在建立存储过程时设定重编译选项CREATE PROCEDURE WITH RECOMPILE通过在创建时设定重编译选项,在每次执行时对存储过程进行重编译处理。,2

9、023/11/7,21/39,带参数的存储过程,存储过程的重编译处理 在执行存储过程时设定重编译选项EXECUTE procedure_nameparameter_name=variable OUTPUT WITH RECOMPILE通过在执行存储过程的EXECUTE语句中设定WITH RECOMPILE选项,可以在执行存储过程时重新编译该存储过程。通过系统存储过程设定重编译选项EXEC sp_recompile OBJECTsp_recompile为用于重编译存储过程的系统存储过程;OBJECT为当前数据库中的存储过程、触发器、表或视图的名称。,2023/11/7,22/39,带参数的存储过

10、程,2023/11/7,23/39,扩展存储过程的创建和使用,扩展存储过程是使用编程语言创建的外部程序,它与通常的存储过程不同。存储过程是一系列预编译的T-SQL语句,而扩展存储过程是对动态链接库函数的调用。使用T-SQL语句注册扩展存储过程sp_addextendedproc functname=procedure,dllname=dll 使用对象资源管理器注册扩展存储过程使用扩展存储过程扩展存储过程注册到SQL Server中之后,这个扩展存储过程就可以像普通存储过程一样被使用。,2023/11/7,24/39,修改和删除存储过程,存储过程被创建以后,它的名字存储在系统表sysobject

11、s中;它的源代码存放在系统表syscomments中。我们既可以通过对象资源管理器查看存储过程的源代码,也可以通过SQL Server提供的系统存储过程来查看用户创建的存储过程信息。使用系统存储过程查看存储过程源代码的语句是:sp_helptext procedure_name 如果在创建存储过程时使用了WITH ENCRYPTION选项,那么就无法查看到存储过程的源代码。,2023/11/7,25/39,存储过程的查看、修改、删除,2023/11/7,26/39,存储过程的查看、修改、删除,使用 ALTER PROCEDURE命令ALTER PROCEDURE procedure_namep

12、arameter data_type=DEFAULTOUTPUT,nWITHRECOMPILE|ENCRYPTION|RECOMPILE,ENCRYTIONAS Sql_statement,nprocedure_name 欲修改存储过程名称parameter 输入和输出参数data_type 参数的数据类型default 指定的默认值WITH RECOMPILE 重编译选项WITH ENCRYPTION加密选项,2023/11/7,27/39,存储过程的查看、修改、删除,2023/11/7,28/39,存储过程的查看、修改、删除,重新命名存储过程sp_rename old_procedure_

13、name,new_procedure_name 使用DROP PROCEDURE语句DROP PROCEDURE procedure_name,nDROP命令可将一个或多个存储过程或者存储过程组从当前数据库中删除。,2023/11/7,29/39,创建和管理触发器,触发器是一种特殊的存储过程,它在特定语言事件发生时自动执行,通常用于实现强制业务规则和数据完整性。触发器的主要作用是实现由主键和外键所不能保证的复杂的参照完整性和数据一致性。除此之外,触发器还有以下作用。触发器可以对数据库进行级联修改。实现比CHECK约束更为复杂的限制。比较数据修改前后的差别。强制表的修改要合乎业务规则。,2023

14、/11/7,30/39,触发器概述,触发器也是一种存储过程,一种在基表被修改时自动执行的内嵌过程,主要通过事件进行触发而被执行的,而存储过程可以通过存储过程名字而被直接调用。当对某一表进行诸如UPDATE、INSERT、DELETE这些操作时,SQL Server就会自动执行触发器所定义的SQL语句。从而确保对数据的处理必须符合由这些SQL语句所定义的规则。触发器的主要作用就是其能够实现由主键和外键所不能保证的复杂的参照完整性和数据的一致性。,2023/11/7,31/39,创建触发器,使用对象资源管理器创建触发器使用命令创建触发器CREATE TRIGGER trigge_nameON ta

15、ble|viewFOR|AFTER|INSTEAD OFINSERT,UPDATE,DELETEWITH ENCRYPTIONASIF UPDATE(column_name)andor UPDATE(column_name)sql_statesments,2023/11/7,32/39,创建触发器,2023/11/7,33/39,创建触发器,2023/11/7,34/39,管理触发器,使用系统存储过程查看触发器信息系统存储过程sp_help、sp_helptext和sp_depends分别提供有关触发器的不同信息。使用系统表查看触发器信息用户还可以通过查询系统表sysobjects得到触发器的

16、相关信息。使用对象资源管理器查看触发器的相关信息使用sp_rename命令修改触发器的名字sp_rename oldname,newname其中,oldname为触发器原来的名称,newname为触发器的新名称。通过对象资源管理器修改触发器定义,2023/11/7,35/39,管理触发器,使用ALERT TRIGGER命令修改触发器ALTER TRIGGER trigge_name ON table|viewFOR|AFTER|INSTEAD OFINSERT,UPDATE,DELETEWITH ENCRYPTIONASIF UPDATE(column_name)and|or UPDATE(c

17、olumn name)sql_statesments,2023/11/7,36/39,管理触发器,使用DROP TRIGGER删除触发器DROP TRIGGER trigger_name使用对象资源管理器删除触发器,右击将要删除触发器,在弹出菜单中选择“删除”,接着再单击“删除对象”对话框中的“确定”即可。删除数据表将自动删除与数据表相关的触发器。当不再需要某个触发器时,可以将其删除。删除了触发器后,它所基于的表和数据不会受到影响。,2023/11/7,37/39,管理触发器,禁止和启用触发器ALTER TABLE table_name ENABLE|DISABLE TRIGGER ALL|t

18、rigger_name,n在有些情况下,用户希望暂停触发器的作用,但并不删除它,这时就可以通过DISABLE TRIGGER语句使触发器无效;DISABLE TRIGGER指定禁用trigger_name要使DML触发器重新有效,可使用ENABLE TRIGGER语句ENABLE TRIGGER指定启用trigger_name,2023/11/7,38/39,实验目的 理解存储过程和触发器的概念。学会使用对象资源管理器和SQL编辑器创建存储过程和触发器。学会存储过程和触发器的管理方法。实验准备 在Windows Server 2000以上版本的微机上安装MS SQL Server 2005;创

19、建数据库和所需要的数据表;向各个数据表输入实验数据。实验内容和步骤 具体实验内容和步骤参见教材的介绍。,本章实验,2023/11/7,39/39,本章在学习存储过程、触发器的概念与功能的基础上,讨论了存储过程与触发器的类型,介绍了使用对象资源管理器和T-SQL语句(CREATE PROCEDURE、ALTER PROCEDURE、DROP PROCEDURE、CREATE TRIGGER、ALTER TRIGGER、DROP TRIGGER)创建、修改、删除存储过程和触发器,以及在存储过程中定义和使用输入、输出参数,由INSERT、UPDATE或DELETE语句引起的数据变化而激活触发器。,本章小结,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号