预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共98页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

数据库原理与应用教程―SQLServer在SQLServer2008应用操作中,存储过程和触发器都扮演着相当重要的角色。 存储过程可以使用户对数据库的管理工作变得更容易。存储过程是SQL语句和可选流程控制语句的预编译集合,它以一个名称存储并作为一个单元处理,能够提高系统的应用效率和执行速度。SQLServer提供了许多系统存储过程以管理SQLServer和显示有关数据库和用户的信息。触发器是一种特殊类型的存储过程。当有操作影响到触发器保护的数据时,触发器就会自动触发执行。触发器是与表紧密联系在一起的,它在特定的表上定义,并与指定的数据修改事件相对应,它是一种功能强大的工具,它可以扩展SQLServer完整性约束默认值对象和规则的完整性检查逻辑,实施更为复杂的数据完整性约束。 本章主要介绍存储过程的基本概念,存储过程的创建、修改、调用和删除操作;触发器的基本概念,触发器的分类,触发器的创建、修改和删除,以及触发器的应用。10.1存储过程 当开发一个应用程序时,为了易于修改和扩充,经常会将负责不同功能的语句集中起来而且按照用途分别独立放置,以便能够反复调用,而这些独立放置且拥有不同功能的语句,即是“过程”(Procedure)。SQLServer2008的存储过程(StoredProcedure)包含一些T-SQL语句并以特定的名称存储在数据库中。可以在存储过程中声明变量、有条件地执行以及其他各项强大的程序设计功能。10.1.1存储过程概述 存储过程是一种数据库对象,独立存储在数据库内。存储过程可以接受输入参数、输出参数,返回单个或多个结果集以及返回值,由应用程序通过调用执行。存储过程是SQLServer中一个非常有用的工具。SQLServer支持存储过程和系统过程。存储过程是独立存在于表之外的数据对象。可以由客户调用,也可以从另一个过程或触发器调用,参数可以被传递和返回,出错代码也可以被检验。存储过程最主要的特色是当写完一个存储过程后即被翻译成可执行码存储在系统表内,当作是数据库的对象之一,一般用户只要执行存储过程,并且提供存储过程所需的参数就可以得到所要的结果而不必再去编辑T-SQL命令。 一般来讲,应使用SQLServer中的存储过程而不使用存储在客户计算机本地的T-SQL程序,其优势主要表现在:(1)允许模块化程序设计。只需创建一次并将其存储在数据库中,以后即可在程序中调用该过程任意次。存储过程可由在数据库编程方面有专长的人员创建,并可独立于程序源代码而单独修改。如果业务规则发生变化,可以通过修改存储过程来适应新的业务规则,而不必修改客户端的应用程序。这样所有调用该存储过程的应用程序就会遵循新的业务规则。(2)允许更快速地执行。如果某操作需要大量T-SQL语句或需重复执行,存储过程将比T-SQL批处理代码的执行要快。创建存储过程时对其进行分析和优化并预先编译好放在数据库内,减少编译语句所花的时间;编译好的存储过程会进入缓存,所以对于经常执行的存储过程,除了第一次执行外,其他次执行的速度会有明显提高。而客户计算机本地的T-SQL语句每次运行时,都要从客户端重复发送,并且在SQLServer每次执行这些语句时,都要对其进行编译和优化。(3)减少网络流量。一个需要数百行T-SQL语句的操作由一条执行过程代码的单独语句就可实现,而不需要在网络中发送数百行代码。 (4)可作为安全机制使用。数据库用户可以通过得到权限来执行存储过程,而不必给予用户直接访问数据库对象的权限。这些对象将由存储过程来执行操作,另外,存储过程可以加密,这样用户就无法阅读存储过程中的T-SQL语句。这些安全特性将数据库结构和数据库用户隔离开来,这也进一步保证数据的完整性和可靠性。WithENCRYPTION10.1.2存储过程的类型 1.系统存储过程 存储过程在运行时生成执行方式,其后在运行时执行速度很快。SQLServer2008中的许多管理活动都是通过一种特殊的存储过程执行的,这种存储过程被称为系统存储过程。系统过程主要存储在master数据库中并以sp_为前缀,并且系统存储过程主要是从系统表中获取信息,从而为数据库系统管理员管理SQLServer提供支持。通过系统存储过程,SQLServer中的许多管理性或信息性的活动(如获取数据库和数据库对象的信息)都可以被顺利有效地完成。尽管这些系统存储过程被存储在master数据库中,但是仍可以在其他数据库中对其进行调用,在调用时,不必在存储过程名前加上数据库名。而且当创建一个数据库时,一些系统存储过程会在新的数据库中被自动创建。 SQLServer2008系统存储过程是为用户提供方便的,它们使用户可以很容易地从系统表中提取信息、管理数据库,并执行涉及更新系统表的其他任务。如果过程以SP_开始,又在当前数据库中找不到