[第10章-存储过程与触发器-课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《[第10章-存储过程与触发器-课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 10 存储 过程 触发器 课件
- 资源描述:
-
1、第第10章章 存储过程与触发器存储过程与触发器本章内容本章内容10.1 存储过程概述存储过程概述10.2 存储过程的创建与使用存储过程的创建与使用10.3 触发器概述触发器概述10.4 触发器的创建与使用触发器的创建与使用10.5 事务处理事务处理10.6 SQL Server的锁机制的锁机制10.1 存储过程概述存储过程概述 n存储过程是存储过程是SQL Server服务器上一组预编服务器上一组预编译的译的Transact-SQL语句,用于完成某项任语句,用于完成某项任务,它可以接受参数、返回状态值和参数务,它可以接受参数、返回状态值和参数值,并且可以嵌套调用。值,并且可以嵌套调用。10.1
2、 10.1 存储过程概述存储过程概述nSQL Server存储过程的类型包括:存储过程的类型包括:系统存储过程系统存储过程用户定义存储过程用户定义存储过程临时存储过程临时存储过程扩展存储过程。扩展存储过程。1.存储过程的类型存储过程的类型10.1 10.1 存储过程概述存储过程概述(1)系统存储过程系统存储过程 n是指由系统提供的存储过程,主要存储在是指由系统提供的存储过程,主要存储在master数据库中数据库中并以并以sp_为前缀,它从系统表中获取信息,从而为系统管为前缀,它从系统表中获取信息,从而为系统管理员管理理员管理SQL Server提供支持。提供支持。n通过系统存储过程,通过系统存
3、储过程,SQL Server中的许多管理性或信息性中的许多管理性或信息性的活动的活动(例如使用例如使用sp_depends、sp_helptexts可以了解数据可以了解数据数据库对象、数据库信息数据库对象、数据库信息)都可以顺利有效地完成。尽管都可以顺利有效地完成。尽管系统存储过程被放在系统存储过程被放在master数据库中,仍可以在其他数据数据库中,仍可以在其他数据库中对其进行调用库中对其进行调用(调用时,不必在存储过程名前加上数调用时,不必在存储过程名前加上数据库名据库名)。当创建一个新数据库时,一些系统存储过程会。当创建一个新数据库时,一些系统存储过程会在新数据库中被自动创建。在新数据库
4、中被自动创建。10.1 10.1 存储过程概述存储过程概述(2)用户定义存储过程用户定义存储过程n是由用户创建并能完成某一特定功能是由用户创建并能完成某一特定功能(例如例如查询用户所需数据信息查询用户所需数据信息)的存储过程。它处的存储过程。它处于用户创建的数据库中,存储过程名前没于用户创建的数据库中,存储过程名前没有前缀有前缀sp_。10.1 10.1 存储过程概述存储过程概述(3)临时存储过程临时存储过程n临时存储过程与临时表类似,分为局部临时存储过程和全临时存储过程与临时表类似,分为局部临时存储过程和全局临时存储过程,且可以分别向该过程名称前面添加局临时存储过程,且可以分别向该过程名称前
5、面添加“#”或或“#”前缀表示。前缀表示。“#”表示本地临时存储过程,表示本地临时存储过程,“#”表示全局临时存储过程。使用临时存储过程必须创建本地表示全局临时存储过程。使用临时存储过程必须创建本地连接,当连接,当SQL Server关闭后,这些临时存储过程将自动被关闭后,这些临时存储过程将自动被删除。删除。n由于由于SQL Server支持重新使用执行计划,所以连接到支持重新使用执行计划,所以连接到SQL Server 2000的应用程序应使用的应用程序应使用sp_executesql系统存储过程,系统存储过程,而不使用临时存储过程。而不使用临时存储过程。10.1 10.1 存储过程概述存储
6、过程概述(4)扩展存储过程扩展存储过程n扩展存储过程是扩展存储过程是SQL Server可以动态装载可以动态装载和执行的动态链接库和执行的动态链接库(DLL)。当扩展存储过。当扩展存储过程加载到程加载到SQL Server中,它的使用方法与中,它的使用方法与系统存储过程一样。扩展存储过程只能添系统存储过程一样。扩展存储过程只能添加到加到master数据库中,其前缀是数据库中,其前缀是xp_。10.1 10.1 存储过程概述存储过程概述2.存储过程的功能特点存储过程的功能特点nSQL Server的存储过程可实现以下功能:的存储过程可实现以下功能:(1)接收输入参数并以输出参数的形式为调用过程接
7、收输入参数并以输出参数的形式为调用过程或批处理返回多个值。或批处理返回多个值。(2)包含执行数据库操作的编程语句,包括调用其包含执行数据库操作的编程语句,包括调用其他过程。他过程。(3)为调用过程或批处理返回一个状态值,以表示为调用过程或批处理返回一个状态值,以表示成功或失败成功或失败(及失败原因及失败原因)。10.1 10.1 存储过程概述存储过程概述存储过程具有以下优点存储过程具有以下优点(1)模块化编程。模块化编程。(2)快速执行。快速执行。(3)减少网络通信量。减少网络通信量。(4)提供安全机制。提供安全机制。(5)保证操作一致性。保证操作一致性。10.2.1 创建存储过程创建存储过程
8、10.2.2 执行存储过程执行存储过程10.2.3 修改存储过程修改存储过程10.2.4 删除存储过程删除存储过程10.2.5 存储过程参数与状态值存储过程参数与状态值10.2 存储过程的创建与使用存储过程的创建与使用10.2.1 创建存储过程创建存储过程1使用使用SQL Server管理平台创管理平台创建存储过程建存储过程(1)打开)打开SQL Server管理平台,管理平台,展开节点展开节点“对象资源管理对象资源管理器器”“数据库服务数据库服务器器”“可编程性可编程性”“存储存储过程过程”,在窗口的右侧显示出,在窗口的右侧显示出当前数据库的所有存储过程。当前数据库的所有存储过程。单击鼠标右
9、键,在弹出的快捷单击鼠标右键,在弹出的快捷菜单中选择菜单中选择“新建存储过程新建存储过程”命令命令。10.2 10.2 存储过程的创建与使用存储过程的创建与使用(2)在打开的)在打开的SQL命令命令窗口中,系统给出了创窗口中,系统给出了创建存储过程命令的模板,建存储过程命令的模板,如图如图10-2所示。在模板所示。在模板中可以输入创建存储过中可以输入创建存储过程的程的Transact-SQL语语句后,单击句后,单击“执行执行”按按钮即可创建存储过程。钮即可创建存储过程。10.2.1 10.2.1 创建存储过程创建存储过程(3)建立存储过程的)建立存储过程的命令被成功执行后,命令被成功执行后,在
10、在“对象资源管理对象资源管理器器”“数据库服务数据库服务器器”“可编程可编程性性”“存储过程存储过程”中可以看到新建立的中可以看到新建立的存储过程存储过程 10.2.1 10.2.1 创建存储过程创建存储过程2.使用使用CREATE PROCEDURE语句创建存储语句创建存储过程过程n使用使用CREATE PROCEDURE语句创建存储过程语句创建存储过程应该考虑以下几个方面:应该考虑以下几个方面:(1)在一个批处理中,在一个批处理中,CREATE PROCEDURE语句不能语句不能与其他与其他SQL语句合并在一起。语句合并在一起。(2)数据库所有者具有默认的创建存储过程的权限,它可数据库所有
11、者具有默认的创建存储过程的权限,它可把该权限传递给其他的用户。把该权限传递给其他的用户。(3)存储过程作为数据库对象其命名必须符合标识符的命存储过程作为数据库对象其命名必须符合标识符的命名规则。名规则。(4)只能在当前数据库中创建属于当前数据库的存储过程。只能在当前数据库中创建属于当前数据库的存储过程。10.2.1 10.2.1 创建存储过程创建存储过程创建存储过程语句的语法格式如下:创建存储过程语句的语法格式如下:CREATE PROCEDURE procedure_name;number parameter data_type VARYING=default OUTPUT,.n WITH
12、RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION FOR REPLICATION AS sql_statement,.n 10.2.1 10.2.1 创建存储过程创建存储过程例例10-1 创建存储过程,从表创建存储过程,从表goods和表和表goods_classification的联接中返回商品名、商的联接中返回商品名、商品类别、单价。品类别、单价。10.2.1 10.2.1 创建存储过程创建存储过程CREATE PROCEDURE goods_info ASSELECT goods_name,classification_name,unit_priceFR
13、OM goods g INNER JOIN goods_classification gcON g.classification_id=gc.classification_idn存储过程创建后,存储过程的名称存放在存储过程创建后,存储过程的名称存放在sysobject表中,表中,文本存放在文本存放在syscomments表中。表中。10.2.2 执行存储过程执行存储过程n执行存储过程的语法格式:执行存储过程的语法格式:EXECUTE return_status=procedure_name;number|procedure_name_var parameter=value|variable O
14、UTPUT|DEFAULT ,.n WITH RECOMPILE 10.2 10.2 存储过程的创建与使用存储过程的创建与使用例如,执行例例如,执行例10-1的存储过程的存储过程goods_infon在在SQL查询分析器中输入命令:查询分析器中输入命令:EXEC goods_infon运行的结果:运行的结果:10.2.2 10.2.2 执行存储过程执行存储过程10.2 10.2 存储过程的创建与使用存储过程的创建与使用10.2.3 修改存储过程修改存储过程n修改存储过程可以通过修改存储过程可以通过SQL Server管理平管理平台和台和Transact-SQL语句实现。语句实现。1使用使用SQ
15、L Server管理平台修改存储过程管理平台修改存储过程 10.2.3 10.2.3 修改存储过程修改存储过程2.使用使用ALTER PROCEDURE语句修改存储语句修改存储过程过程nALTER PROCEDURE的语法规则是:的语法规则是:ALTER PROCEDURE procedure_name ;number parameter data_typeVARYING=default OUTPUT ,.n WITH RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTIONFOR REPLICATION AS sql_statement .n 10.2.3 10.2
16、.3 修改存储过程修改存储过程例例10-2 使用使用ALTER PROCEDURE语句更改语句更改存储过程。存储过程。(1)创建存储过程创建存储过程employee_dep,以获取总经理办的,以获取总经理办的男员工。男员工。CREATE PROCEDURE employee_dep AS SELECT employee_name,sex,address,department_nameFROM employee e INNER JOIN department d ON e.department_id=d.department_id WHERE sex=男男 AND e.department_id
17、=D001GO执行存储过程执行存储过程employee_dep,结果如图,结果如图 10.2.3 10.2.3 修改存储过程修改存储过程(2)查看查看employee_dep存储过程的文本信息存储过程的文本信息SELECT o.id,c.textFROM sysobjects o INNER JOIN syscomments c ON o.id=c.idWHERE o.type=P AND o.name=employee_depGO10.2.3 10.2.3 修改存储过程修改存储过程(3)使用使用ALTER PROCEDURE语句对语句对employee_dep过程进行修改,使其能够显示出过程
18、进行修改,使其能够显示出所有男员工,并使所有男员工,并使employee_dep过程以加密方过程以加密方式存储在表式存储在表syscomments中中ALTER PROCEDURE employee_depWITH ENCRYPTION AS SELECT employee_name,sex,address,department_nameFROM employee e INNER JOIN department d ON e.department_id=d.department_id WHERE sex=男男 GO10.2.3 10.2.3 修改存储过程修改存储过程执行修改后的存储过程执行修改
19、后的存储过程employee_dep,结果,结果如图:如图:10.2.3 10.2.3 修改存储过程修改存储过程(4)从系统表从系统表sysobjects和和syscomments提取修提取修改后的存储过程改后的存储过程employee_dep的文本信息可的文本信息可以运行步骤(以运行步骤(2)中的代码,结果如图)中的代码,结果如图 n这是由于在这是由于在ALTER PROCEDURE语句中使用语句中使用WITH ENCRYPTION关键字对存储过程关键字对存储过程employee_dep的文本的文本进行了加密,其文本信息显示为进行了加密,其文本信息显示为NULL。10.2 10.2 存储过程
20、的创建与使用存储过程的创建与使用10.2.4 删除存储过程删除存储过程 n存储过程可以被快速删除和重建,因为它没有存存储过程可以被快速删除和重建,因为它没有存储数据。储数据。1使用使用SQL Server管理平台删除存储过程管理平台删除存储过程(1)打开SQL Server管理平台,展开节点“对象资源管理器”“数据库服务器”“可编程性”“存储过程”,选择要删除的存储过程,单击鼠标右键,在弹出的快捷菜单中选择“删除”命令。(2)在弹出的“删除对象”对话框中单击“确定”按钮即可删除存储过程。10.2.4 10.2.4 删除存储过程删除存储过程2.使用使用DROP PROCEDURE删除存储过程删除
21、存储过程nDROP PROCEDURE的语法如下:的语法如下:DROP PROCEDURE procedure_name ,.n n例如删除例例如删除例10-2创建的存储过程创建的存储过程employee_dep:DROP PROCEDURE employee_depGO10.2 10.2 存储过程的创建与使用存储过程的创建与使用10.2.5 存储过程参数与状态值存储过程参数与状态值n存储过程和调用者之间通过参数交换数据,可以存储过程和调用者之间通过参数交换数据,可以按输入的参数执行,也可由参数输出执行结果。按输入的参数执行,也可由参数输出执行结果。调用者通过存储过程返回的状态值对存储过程进调
22、用者通过存储过程返回的状态值对存储过程进行管理。行管理。1.参数参数n存储过程的参数在创建过程时声明。存储过程的参数在创建过程时声明。nSQL Server支持两类参数:输入参数和输出参数。支持两类参数:输入参数和输出参数。10.2.5 10.2.5 存储过程参数与状态值存储过程参数与状态值(1)输入参数输入参数n输入参数允许调用程序为存储过程传送数输入参数允许调用程序为存储过程传送数据值。要定义存储过程的输入参数,必须据值。要定义存储过程的输入参数,必须在在CREATE PROCEDURE语句中声明一个语句中声明一个或多个变量及类型。或多个变量及类型。10.2.5 10.2.5 存储过程参数
23、与状态值存储过程参数与状态值例例10-3 创建带参数的存储过程,从表创建带参数的存储过程,从表employee、sell_order、goods、goods_classification的连接中返的连接中返回输入的员工名、该员工销售的商品名、商品类别、回输入的员工名、该员工销售的商品名、商品类别、销售量等信息。销售量等信息。CREATE PROC sell_info employee_name varchar(20)AS SELECT employee_name,goods_name,classification_name,order_numFROM employee e INNER JOIN
24、 sell_order s ON e.employee_id=s.employee_id JOIN goods g ON g.goods_id=s.goods_id JOIN goods_classification gc ON gc.classification_id=g.classification_idWHERE employee_name LIKE employee_name10.2.5 10.2.5 存储过程参数与状态值存储过程参数与状态值n存储过程存储过程sell_info以以employee_name变量作为输变量作为输入参数,执行时,可以省略参数名,直接给参数入参数,执行时,可
25、以省略参数名,直接给参数值。在值。在SQL查询分析器中输入命令:查询分析器中输入命令:EXEC sell_info 东方牧东方牧n运行结果如图。运行结果如图。n参数值可以包含通配符参数值可以包含通配符“%”,例如,查找所有姓,例如,查找所有姓“钱钱”的员工的销售情况可以使用以下命令:的员工的销售情况可以使用以下命令:nEXEC sell_info 钱钱%10.2.5 10.2.5 存储过程参数与状态值存储过程参数与状态值执行时,参数可以由位置标识,也可以由名执行时,参数可以由位置标识,也可以由名字标识。字标识。n例如,定义一个具有例如,定义一个具有3个参数的存储过程:个参数的存储过程:CREA
展开阅读全文