1、清华大学出版社 . SQL Server 2005数据库应用与开发 第 08章 存储过程和触发器 内容提要内容提要 :n 存储过程(存储过程( Stored Procedure)是一组完成特定功能的)是一组完成特定功能的Transact- SQL语句的集合。存储过程是通过用户、其他过语句的集合。存储过程是通过用户、其他过程或触发器来调用执行。程或触发器来调用执行。n 利用存储过程可以保证数据的完整性,提高执行重复任利用存储过程可以保证数据的完整性,提高执行重复任务的性能和数据的一致性。务的性能和数据的一致性。n 存储过程主要应用于控制访问权限、为数据库表中的活存储过程主要应用于控制访问权限、为
2、数据库表中的活动创建审计追踪、将关系到数据库及其所有相关应用程动创建审计追踪、将关系到数据库及其所有相关应用程序的数据定义语句和数据操作语句分隔开。序的数据定义语句和数据操作语句分隔开。 n 触发器(触发器( Trigger)是一种特殊的存储过程。触发器通常)是一种特殊的存储过程。触发器通常在特定的表上定义,当该表的相应事件发生时自动执行在特定的表上定义,当该表的相应事件发生时自动执行,用于实现强制业务规则和数据完整性等。,用于实现强制业务规则和数据完整性等。清华大学出版社 . SQL Server 2005数据库应用与开发 第 08章 存储过程和触发器 本章内容本章内容 :8.1 存储过程概
3、述存储过程概述8.2 创建和管理存储过程创建和管理存储过程8.3 触发器概述触发器概述8.4 创建和管理触发器创建和管理触发器8.5小结小结清华大学出版社 . SQL Server 2005数据库应用与开发 8.1 存储过程概述存储过程概述存储过程的主要用途:n 提高了处理复杂任务的能力。n 增强了代码的复用率和共享性。存储过程一旦创建后即可在程序中调用任意多次。n 减少了网络中数据的流量。存储过程在服务器注册,加快了过程的运行速度。n 加强了系统的安全性。存储过程具有安全特性(例如权限)和所有权链接,用户可以被授予权限来执行存储过程而不必直接对存储过程中引用的对象具有权限。清华大学出版社 .
4、 SQL Server 2005数据库应用与开发 8.1 存储过程概述存储过程概述8.1.1 存储过程的类型SQL Server 2005支持的存储过程的类型主要有如下4类。( 1)系统存储过程。 SQL Server 2005 中的许多管理活动都是存储过程执行的。n 从物理意义上讲,系统存储过程存储在 源数据库 中,并且带有 sp_ 前缀。n 从逻辑上讲,系统存储过程出现在每个系统定义数据库和用户定义数据库的 sys 构架中。( 2)用户定义的存储过程。用户可以自己创建存储过程。存储过程是指封装了可重用代码的模块或例程。用户存储过程有两种类型:清华大学出版社 . SQL Server 200
5、5数据库应用与开发 8.1 存储过程概述存储过程概述8.1.1 存储过程的类型n Transact-SQL 存储过程是指保存的 Transact-SQL 语句集合,可接受和返回用户提供的参数。n CLR 存储过程是指对 Microsoft .NET Framework 公共语言运行时 (CLR) 方法的引用,可以接受和返回用户提供的参数( 3)临时存储过程。以 “#”或 “#”为前缀,表示局部临时存储过程和全局临时存储过程。( 4)扩展存储过程。以 xp_为前缀,是 SQL Server 2005的实例可以动态加载和运行的 DLL。清华大学出版社 . SQL Server 2005数据库应用与
6、开发 8.1 存储过程概述存储过程概述8.1.2 存储过程的设计原则用户创建存储过程时,应注意遵循以下几点原则。n 存储过程最大不能超过 128MB。n 用户定义的存储过程只能在当前数据库中创建。n 存储过程是为了处理那些需要被多次运行的Transact-SQL语句集。n SQL Server允许在存储过程创建时引用一个不存在的对象,系统只检查创建存储过程的语法。执行时,存储过程引用了一个不存在的对象,则这次执行操作将会失败。n 存储过程可以嵌套使用。嵌套的最大层次可以用 NESTLEVEL函数来查看。清华大学出版社 . SQL Server 2005数据库应用与开发 8.1 存储过程概述存储
7、过程概述8.1.3 常用系统存储过程的使用SQL Server 2005提供了许多系统存储过程 ,下面介绍几种常用的系统存储过程。( 1) sp_helpdb 用于查看数据库名称及大小。( 2) sp_helptext 用于显示规则、默认值、未加密的存储过程、用户定义函数、触发器或视图的文本。( 3) sp_renamedb 用于重命名数据库。( 4) sp_rename 用于更改当前数据库中用户创建对象(如表、列或用户定义数据类型)的名称。( 5) sp_helplogins查看所有数据库用户登录信息。( 6) sp_helpsrvrolemember 用于以查看所有数据库用户所属的角色信息
8、。清华大学出版社 . SQL Server 2005数据库应用与开发 8.2 创建和管理存储过程创建和管理存储过程8.2.1 创建存储过程1使用 SQL Server Management Studio创建存储过程利用 SQL Server Management Studio创建存储过程就是创建一个模板,通过改写模板创建存储过程。具体参考步骤如下。( 1)启动 SQL Server Management Studio,在对象资源管理器中,展开 “数据库 ”| teaching |“可编程性 ”|“存储过程 ”。( 2)如图 8.1所示,右击 “存储过程 ”节点,选择 “新建存储过程 ”菜单命令
9、。清华大学出版社 . SQL Server 2005数据库应用与开发 8.2 创建和管理存储过程创建和管理存储过程8.2.1 创建存储过程1使用 SQL Server Management Studio创建存储过程( 3)系统弹出存储过程模板,如图 8.2所示,用户可以参照模板在其中输入合适的 Transact-SQL语句。( 4)单击工具栏中的 “执行 ”按钮,即可将存储过程保存在数据库中。( 5)刷新 “存储过程 ”节点,可以观察到下方出现了新建的存储过程。清华大学出版社 . SQL Server 2005数据库应用与开发 8.2 创建和管理存储过程创建和管理存储过程8.2.1 创建存储过
10、程2使用 CREATE PROCEDURE语句创建存储过程CREATE PROCEDURE语句的语法格式如下:CREATE PROC EDURE procedure_name ; number parameter_data_type VARYING = default OUTPUT ,n WITH RECOMPILE | ENCRYPTION FOR REPLICATION AS sql_statament ,n 例 8.1创建一个存储过程,输出所有学生的姓名、课程名称和期末成绩信息。程序代码如下 :CREATE PROCEDURE student_scoreASSELECT sname, cname, finalFROM student s ,course c ,score scWHERE s.studentno=sc. studentno and c.courseno=sc.courseno