第9章存储过程与触发器*
本章要点
存储过程和触发器都是SQL Server的数据库对象。存储过程的存在独立于表,它存放在服务器上,供客户端调用;触发器的使用则和表的更新操作紧密结合,它是一种特殊的存储过程,使用触发器可以大大提高数据库应用程序的灵活性和健壮性,可以利用触发器来实现复杂的业务规则,更有效地实施数据完整性。
存储过程和触发器是大型、复杂、高性能要求的数据库应用系统所必需要的技术,围绕存储过程和触发器本章主要介绍:存储过程概述、设计存储过程、实现和管理存储过程、DML 触发器概述、设计DML 触发器、实现和管理DML 触发器、DDL触发器概述、设计DDL 触发器、实现 DDL 触发器等。
本章目录
存储过程
DML 触发器
DDL 触发器
练习题9
上机实习8
存储过程
存储过程概述
设计存储过程
实现和管理存储过程
返回本节首页
存储过程概述
返回本节首页
使用SQL Server创建应用程序时,T-SQL编程语言是应用程序和SQL Server数据库之间的主要编程接口。使用T-SQL程序时,可用两种方法存储和执行程序:1)可以将程序存储在本地,并设计向SQL Server发送命令并处理结果的应用程序。2)也可以将程序以存储过程形式存储在SQL Server服务器中,并创建执行存储过程并处理结果的应用程序。
1、存储过程基本知识
SQL Server中的存储过程与其它编程语言中的过程类似,原因是存储过程可以:1)接受输入参数并以输出参数的格式向调用过程或批处理返回多个值;2)包含用于在数据库中执行操作(包括调用其它过程)的编程语句;3)向调用过程或批处理返回状态值,以指明成功或失败(以及失败的原因)。
可以使用 T-SQL EXECUTE 语句来运行存储过程。存储过程与函数不同,因为存储过程不返回取代其名称的值,也不能直接在表达式中使用。
存储过程概述
返回本节首页
在SQL Server中使用存储过程而不使用存储在客户端计算机本地的T-SQL程序的好处包括:1)存储过程已在服务器注册;2)存储过程具有安全特性(例如权限)和所有权链接,以及可以附加到它们的证书。用户可以被授予权限来执行存储过程而不必直接对存储过程中引用的对象具有权限;3)存储过程可以强制应用程序的安全性。参数化存储过程有助于保护应用程序不受SQL Injection攻击;4)存储过程允许模块化程序设计。存储过程一旦创建,以后即可在程序中调用任意多次。这可以改进应用程序的可维护性,并允许应用程序统一访问数据库;5)存储过程是命名代码,允许延迟绑定。这提供了一个用于简单代码演变的间接级别;6)存储过程可以减少网络通信流量。一个需要数百行T-SQL代码的操作可以通过一条执行过程代码的语句来执行,而不需要在网络中发送数百行代码。
注意:SQL Injection是一种攻击方法,它可以将恶意代码插入到以后将传递给SQL Server供分析和执行的字符串中,后将执行并遭到攻击。
存储过程概述
返回本节首页
2、存储过程的类型
在SQL Server 2005中有多种可用的存储过程,主要有用户定义的存储过程(分T-SQL与CLR)、扩展存储过程、系统存储过程。
(1)用户定义的存储过程
存储过程是指封装了可重用代码的模块或例程。存储过程可以接受输入参数、向客户端返回表格或标量结果和消息、调用数据定义语言(DDL)和数据操作语言(DML)语句,然后返回输出参数。在SQL Server 2005中,存储过程有两种类型:T-SQL或CLR。
1)T-SQL 存储过程是指保存的T-SQL语句集合,可以接受和返回用户提供的参数。例如,存储过程中可能包含根据客户端应用程序提供的信息在一个或多个表中插入新行所需的语句。存储过程也可能从数据库向客户端应用程序返回数据。例如,电子商务Web应用程序可能使用存储过程根据联机用户指定的搜索条件返回有关特定产品的信息。
2) Framework公共语言运行时(CLR)方法的引用,可以接受和返回用户提供的参数。 Framework程序集中是作为类的公共静态方法实现的。
存储过程概述
返回本节首页
(2)扩展存储过程
扩展存储过程允许您使用编程语言(例如C)创建自己的外部例程。扩展存储过程是指SQL Server的实例可以动态加载和运行的DLL。扩展存储过程直接在SQL Server的实例的地址空间中运行,可以使用SQL Server扩展存储过程API完成编程。
注意:CLR集成提供了更为可靠和安全的替代方法来编写扩展存储过程。
(3)系统存储过程
SQL Server
第9章 存储过程与触发器 来自淘豆网m.daumloan.com转载请标明出处.