计算机原理 第9章 存储过程与触发器课件.ppt
《计算机原理 第9章 存储过程与触发器课件.ppt》由会员分享,可在线阅读,更多相关《计算机原理 第9章 存储过程与触发器课件.ppt(113页珍藏版)》请在三一办公上搜索。
1、学习目标: 通过本章学习,你能够学会:1. 了解存储过程与触发器的特性2. 了解存储过程与触发器的优点3. 应熟练掌握使用企业管理器创建、修改、删除和查看存储过程与与触发器的操作。4. 应熟练掌握使用T-SQL语句创建、修改、删除和查看存储过程,及如何执行存储过程与与触发器的操作。,第9章 存储过程与触发器,存储过程与触发器是SQL Server中的两类数据库对象。它们都是由T-SQL语句编写而成的过程,所不同的是存储过程是由用户根据需要调用执行的,而触发器则是由某个动作(如删除或修改一条记录)引发执行的。另外,存储过程可以不依附于表而单独存在,而触发器则必须依附于一个特定的表。它们与函数也不
2、同,函数可以直接通过函数名返回数值,其返回值可以直接在表达式中使用,而存储过程与触发器则不能直接通过其名称带回返回值,也不能直接在表达式中使用。,第9章 存储过程与触发器,91 存储过程概念实例9.1 了解存储过程的执行过程,如图9.1所示。 归纳分析: 在SQL Server中定义的过程被称为存储过程。存储过程是一组预先编译好的T-SQL代码,作为一个整体用于执行特定的操作。存储过程属于数据库对象,它们存放在数据库中,需要时用户可以调用。,第9章 存储过程与触发器,存储过程具有如下优点: 1. 存储过程将一系列复杂的T-SQL代码封装在一起作为数据库对象存放在数据库 中,用户使用时不必接触T
3、-SQL而仅需直接调用即可得到所需结果,简化了用户的操作。 2. 存储过程已经被编译,执行时省去了编译与优化的时间。另外,第一次从磁盘调用存储过程后,它将驻留在内存中,下一次使用时可以直接从内存中调用,因此对于需要多次调用的存储过程而言,速度明显加快。 3.在分布式查询中,调用存储过程的语句将比直接使用T-SQL的语句少得多,这将大大减少网络流量。 4.通过适当的权限设置,可以使系统的安全性得到更有效的保障。,第9章 存储过程与触发器,92 存储过程分类实例9.2 查看系统存储过程。 操作步骤:,第9章 存储过程与触发器,归纳分析: SQL Server的存储过程分为三大类: 1系统存储过程
4、系统存储过程是SQL Server内置的存储过程,可以直接用于执行一些操作,用于进行系统管理、登录管理、权限设置、数据库对象管理、查看数据库信息、数据库复制等操作。系统存储过程存放在master数据库中,以sp_作为前缀。在任何数据库中无需用master限定就直接执行。,第9章 存储过程与触发器,2临时存储过程 临时存储过程与临时表类似。是对用户定义的存储过程。以#、或#开头的存储过程。无论用户在哪个数据库中创建,它们都存放在临时数据库tempdb中。以#开头的存储过程是局部临时存储过程,它仅能由其创建者本人在创建完后立即调用,一旦该创建者断开与数据库的连接,局部临时存储过程立即被删除。以#开
5、头的存储过程是全局临时存储过程,它可以由创建者本人和其他用户在创建完后共同调用,一旦创建者断开与数据库的连接,则不再允许新的用户使用,而且等其他正在使用该存储过程的用户使用完毕后,全局临时存储过程也被删除。,第9章 存储过程与触发器,3. 扩展存储过程 是利用高级语言(如C语言)编写的存储过程,是SQL Server可以动态装载并执行的动态链接库(DLL)。扩展存储过程只能添加到master数据库中。本章不介绍扩展存储过程有关内容,读者可以参考其他书籍有关内容。,第9章 存储过程与触发器,93存储过程创建931使用企业管理器创建存储过程实例9.3 在企业管理器中建立名为pro_new的存储过程
6、,并执行。 操作步骤:,第9章 存储过程与触发器,归纳分析: 如果是查看或修改已有存储过程的定义,则右击要查看或修改的存储过程,在弹出的快捷菜单中,选择“属性”命令,则调出“存储过程属性”窗口,在这里可以查看或修改存储过程的定义。,第9章 存储过程与触发器,932 使用T-SQL语句创建存储过程实例9.4 在“学生”数据库中建立一个存储过程pro_new1,用于查询所有学生的学号和数学期中成绩、计算机期中成绩,要求数学期中成绩和计算机期中成绩分别列出。已知数学期中成绩的课程号是1002、计算机期中成绩的课程号是2005。 操作步骤:,第9章 存储过程与触发器,归纳分析: 如果是查看或修改已有存
7、储过程的定义,则右击要查看或修改的存储过程,在弹出的快捷菜单中,选择“属性”命令,则调出“存储过程属性”窗口,在这里可以查看或修改存储过程的定义。,第9章 存储过程与触发器,932 使用T-SQL语句创建存储过程实例9.4 在“学生”数据库中建立一个存储过程pro_new1,用于查询所有学生的学号和数学期中成绩、计算机期中成绩,要求数学期中成绩和计算机期中成绩分别列出。已知数学期中成绩的课程号是1002、计算机期中成绩的课程号是2005。 操作步骤:,第9章 存储过程与触发器,归纳分析: 在SQL Server中,使用CREATE PROCEDURE语句创建一个永久或临时存储过程。 命令格式:
8、 CREATE PROCEDURE 存储过程名 WITH ENCRYPTION WITH RECOMPILE AS SQL 语句命令说明: (1)WITH ENCRYPTION:对存储过程进行加密。 (2)WITH RECOMPILE:对存储过程重新编译。,第9章 存储过程与触发器,94 执行存储过程实例9.5 分别执行实例9.3、实例9.4建立存储过程。 操作步骤:,第9章 存储过程与触发器,归纳分析:注意:执行存储过程时,区分大小写。 存储过程一旦编写好后,就可以调用执行。执行存储过程的语法如下。命令格式: EXECUTE 存储过程名 字符串变量|NSQL语句字符串+n,第9章 存储过程与
9、触发器,95 修改存储过程951 更改存储过程名称实例9.6 将实例9.3所创建的名为pro_new存储过程,修改成名为pro_存储过程。 操作步骤: (1) 启动“查询分析器”,输入如下SQL语句: sp_rename pro_new , pro_存储过程 (2)按“F5”键或单击工具栏“执行查询”图标。,第9章 存储过程与触发器,归纳分析: 只有数据库所有者和存储过程的所有者才有权修改存储过程名称。不宜轻易修改存储过程名称,因为系统中许多应用程序可能都要调用存储过程,如果修改了存储过程的名称,则这些应用程序都要随之改动。命令格式: sp_rename 原存储过程名,新存储过程名 修改存储过
10、程名称的方法与修改表名称的方法类同,读者可以参照执行。 使用企业管理器修改存储过程名称的方法也类似于修改表名称的方法,即展开指定的数据库节点,单击存储过程,在右边的窗口中选中一个需要修改名称的存储过程右击之,在弹出的快捷菜单中选择“重命名”。,第9章 存储过程与触发器,952 修改存储过程的参数与定义1. 使用企业管理器修改存储过程实例9.7 使用企业管理器修改存储过程实例9.4,增加显示课程号的列。 操作步骤:,第9章 存储过程与触发器,2. 使用T-SQL语句修改存储过程实例9.8 在实例9.4创建的存储过程,修改查询记录按名次排列。 操作步骤:,第9章 存储过程与触发器,归纳分析: 修改
11、已经创建的存储过程,可以不更改其用户的使用权限,也不更改其名称,因此不会破坏其他相关程序的引用关系。 命令格式: ALTER PROCEDURE 存储过程名 WITH ENCRYPTION WITH RECOMPILE AS SQL 语句 命令说明: 其中各项语法含义与创建存储过程类似。,第9章 存储过程与触发器,96 删除存储过程961使用企业管理器删除存储过程实例9.9 使用企业管理器删除存储过程。 操作步骤:,第9章 存储过程与触发器,存储过程与触发器是SQL Server中的两类数据库对象。它们都是由T-SQL语句编写而成的过程,所不同的是存储过程是由用户根据需要调用执行的,而触发器则
12、是由某个动作(如删除或修改一条记录)引发执行的。另外,存储过程可以不依附于表而单独存在,而触发器则必须依附于一个特定的表。它们与函数也不同,函数可以直接通过函数名返回数值,其返回值可以直接在表达式中使用,而存储过程与触发器则不能直接通过其名称带回返回值,也不能直接在表达式中使用。,第9章 存储过程与触发器,归纳分析: SQL Server的存储过程分为三大类: 1系统存储过程 系统存储过程是SQL Server内置的存储过程,可以直接用于执行一些操作,用于进行系统管理、登录管理、权限设置、数据库对象管理、查看数据库信息、数据库复制等操作。系统存储过程存放在master数据库中,以sp_作为前缀
13、。在任何数据库中无需用master限定就直接执行。,第9章 存储过程与触发器,归纳分析: 如果是查看或修改已有存储过程的定义,则右击要查看或修改的存储过程,在弹出的快捷菜单中,选择“属性”命令,则调出“存储过程属性”窗口,在这里可以查看或修改存储过程的定义。,第9章 存储过程与触发器,归纳分析: 在SQL Server中,使用CREATE PROCEDURE语句创建一个永久或临时存储过程。 命令格式: CREATE PROCEDURE 存储过程名 WITH ENCRYPTION WITH RECOMPILE AS SQL 语句命令说明: (1)WITH ENCRYPTION:对存储过程进行加密
14、。 (2)WITH RECOMPILE:对存储过程重新编译。,第9章 存储过程与触发器,归纳分析: 只有数据库所有者和存储过程的所有者才有权修改存储过程名称。不宜轻易修改存储过程名称,因为系统中许多应用程序可能都要调用存储过程,如果修改了存储过程的名称,则这些应用程序都要随之改动。命令格式: sp_rename 原存储过程名,新存储过程名 修改存储过程名称的方法与修改表名称的方法类同,读者可以参照执行。 使用企业管理器修改存储过程名称的方法也类似于修改表名称的方法,即展开指定的数据库节点,单击存储过程,在右边的窗口中选中一个需要修改名称的存储过程右击之,在弹出的快捷菜单中选择“重命名”。,第9
15、章 存储过程与触发器,96 删除存储过程961使用企业管理器删除存储过程实例9.9 使用企业管理器删除存储过程。 操作步骤:,第9章 存储过程与触发器,962 使用T-SQL语言删除存储过程实例9.10 删除Pro_new存储过程。 操作步骤:(1) 启动“查询分析器”,输入如下SQL语句: DROP PROCEDURE Pro_new(2)按“F5”键或单击工具栏“执行查询”图标。归纳分析: 不再需要存储过程时,可以利用企业管理器或T-SQL语言删除。 命令格式: DROP PROCEDURE 存储过程名称或存储过程组名称 注意:删除存储过程组时不必写出下标,即可将组中所有成员全部删除。,第
16、9章 存储过程与触发器,97 查看存储过程971使用企业管理器查看存储过程的信息实例9.11 使用企业管理器查看存储过程的信息。 操作步骤: 在图9.4所示属性对话框中可以查询存储过程的名称、所有者、建立时间和文本信息。 在图9.3所示窗口的右部选中一个存储过程并右击,在弹出的级联菜单中依次选择“所有任务”、“显示相关性”,系统会弹出“显示相关性”对话框,该对话框显示一个存储过程所引用的表及其列信息。,第9章 存储过程与触发器,972 使用T-SQL语言查看存储过程的信息实例9.12 利用系统存储过程查询 pro_存储过程的信息。 操作步骤:,第9章 存储过程与触发器,归纳分析: (1)查看定
17、义存储过程的文本命令格式: sp_helptext obiname= 存储过程名 (2)查看存储过程的名称、所有者、建立时间命令格式: sp_help obiname= 存储过程名 (3)查看存储过程所引用的表(或查看一个表被哪些存储过程所引用) 命令格式: sp_depends obiname= 表名 (4)查看一个存储过程引用了哪些表及其列: sp_depends obiname= 存储过程名,第9章 存储过程与触发器,归纳分析: (1)查看定义存储过程的文本命令格式: sp_helptext obiname= 存储过程名 (2)查看存储过程的名称、所有者、建立时间命令格式: sp_hel
18、p obiname= 存储过程名 (3)查看存储过程所引用的表(或查看一个表被哪些存储过程所引用) 命令格式: sp_depends obiname= 表名 (4)查看一个存储过程引用了哪些表及其列: sp_depends obiname= 存储过程名,第9章 存储过程与触发器,命令格式: CREATE PROCEDURE 存储过程名 参数名 数据类型=默认值 WITHEN ENCRYPTION WITHRE RECOMPILE AS SQL语句命令说明: “参数名”和定义局部变量一样,必须以符号为前缀,要指定数据类型,多个参数定义要用逗号“,”隔开。在执行存储过程时该参数将由指定的参数值来代
19、替,如果执行时未提供该参数的参数值,则如果这里定义了默认值则使用该值作为执行时的参数值,默认值可以是常量或空(NULL)。,第9章 存储过程与触发器,99创建触发器 SQL Server 2000提供了两种主要机制用于维护数据的完整性:一种是第8章介绍的约束,另一种就是本章将要介绍的触发器。触发器虽然是一种特殊的存储过程,但是它与表却是紧密联系的,离开了表它将不复存在(这点与约束十分类似)。触发器又不像存储过程那样需要调用才能执行,而是在对表中数据进行增、删、改(INSERT、UPDATE、 DELETE)操作时被触发而执行。触发器可以包含复杂的T-SQL语句。在触发器内设置回滚,可以将触发它
20、的语句所在的事务全部回滚,这样检测到错误时可以回滚事务以撤销错误。,第9章 存储过程与触发器,992 使用T-SQL语句创建触发器实例9.16 建立一个触发器,防止用户在要删除表学生信息中的一条数据时,由于没有使用限制条件(误用SELECT FROM 学生信息语句)而导致删除全部数据的情况发生。 操作步骤:,第9章 存储过程与触发器,(4) INSERT,UPDATE , DELETE:指定在表或视图上执行哪些数据修改语句时将激活触发器。必须至少指定一个选项,如果指定的选项多于一个,需用逗号分隔。(5) IF UPDATE(列名)(AND|OR) UPDATE(列名)n:判定某一列或几列,是否
21、被修改。如果希望仅当某一列(或几列)的数据发生变化才导致触发器动作,而其他列的数据变化不会引发触发器执行,则可以采用本选项。此时可以称之为列级触发器。,第9章 存储过程与触发器,归纳分析: SQL Server 2000中可以建立两类触发器,一类是在触发后将执行一组新的T-SQL语句用以代替引起触发器执行的语句(原有语句没有执行,仅执行新语句),称之为INSTEAD OF触发器:另一类是在引起触发器执行的语句执行完毕后,再执行触发器中的语句,称之为AFTER类触发器。(1)INSTEAD OF触发器既可以在表上定义,也可以在视图上定义。该类触发器依据其触发动作(UPDATE、DELETE和IN
22、SERT)的不同分为INSTEAD OF INSERT、INSTEAD OF UPDATE和INSTEAD OF DELETE三种,被引发执行时将分别代替表或视图的INSERT、UPDATE、DELETE操作,亦即表中的增删改操作没有进行。每个触发动作仅可以定义一个INSTEAD OF触发器。,第9章 存储过程与触发器,9112 修改触发器的定义 实例9.21 在企业管理器中修改实例9.17将删除表改为添加记录。 操作步骤:(3)单击检查语法按钮,进行语法检查,成功后,可插入数据检验触发器的效果。,第9章 存储过程与触发器,4. 应熟练掌握使用企业管理器创建、修改、删除和查看存储过程的操作。5
23、. 应熟练掌握使用T-SQL语句创建、修改、删除和查看存储过程,及如何执行存储过程的操作。6. 应掌握使用T-SQL语句带参数和变量创建和修改存储过程,及如何执行存储过程。7. 了解触发器在对表中数据进行增、删、改(INSERT、UPDATE、 DELETE)操作时被触发而执行。触发器可以包含复杂的T-SQL语句。在触发器内设置回滚,可以将触发它的语句所在的事务全部回滚,这样检测到错误时可以回滚事务以撤销错误。8. 触发器的优点: (1)触发器可以实现外键约束的功能,实现对表的级连修改。,第9章 存储过程与触发器,9.15.2 实训1 实训目的 (1) 熟练掌握用T-SQL语句存储过程与触发器
24、所需的记录。 (2) 熟练掌握用T-SQL语句编写的操作过程。 (3) 熟练掌握存储过程与触发器的表示方法。 (4) 熟练掌握使用企业管理器创建、修改、删除和查看存储过程与与触发器的操作。 (5) 熟练掌握使用T-SQL语句创建、修改、删除和查看存储过程,及如何执行存储过程与与触发器的操作。 2实训环境 SQL Server 2000的运行、管理环境。,第9章 存储过程与触发器,98 存储过程编程981 参数和变量实例9.13 创建的存储过程,修改成当输入学生学号时可以查询某个学生的成绩:不输入学号时,则查询全部学生的成绩。 操作步骤:,第9章 存储过程与触发器,(3)本例定义了一个输入参数s
25、tuID用于传送学号,其默认值为空。执行存储过程时,如果指定了该输入参数的值,则按照该参数所给的学号查询指定学生的成绩,如果参数stuID的值为空,则查询所有学生成绩。输入如图9.8所示上部分程序,查看运行结果,如图9.8所示下部分。,第9章 存储过程与触发器,归纳分析:1.建立带输入参数的存储过程 向存储过程指定输入、输出参数的主要目的是通过参数向存储过程输入和输出信息来扩展存储过程的功能。通过使用参数,可以多次使用同一存储过程并按用户要求查找所需要的结果。如实训9.13所示,没有参数就缺少灵活性。 一个存储过程可以带一个或多个输入参数,输入参数是指由调用程序向存储过程传递的参数,它们在创建
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机原理 第9章 存储过程与触发器课件 计算机 原理 存储 过程 触发器 课件
链接地址:https://www.31ppt.com/p-1547189.html