第8章存储过程触发器和函数_第1页
第8章存储过程触发器和函数_第2页
第8章存储过程触发器和函数_第3页
第8章存储过程触发器和函数_第4页
第8章存储过程触发器和函数_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第8章章存储过程、触发器存储过程、触发器本章学习目标本章学习目标 掌握存储过程的基本概念、特点和类型掌握存储过程的基本概念、特点和类型 掌握存储过程的创建和执行方式掌握存储过程的创建和执行方式 掌握存储过程的管理方式掌握存储过程的管理方式 掌握触发器的基本概念、特点和类型掌握触发器的基本概念、特点和类型 掌握触发器的创建和管理方式掌握触发器的创建和管理方式本章主要内容本章主要内容 存储过程概述存储过程概述 创建和执行存储过程创建和执行存储过程 管理存储过程管理存储过程 创建触发器创建触发器 管理触发器管理触发器8.1 存储过程概述存储过程概述1. 存储过程的定义2. 存储过程的特点3. 存储

2、过程的类型1. 存储过程的定义存储过程的定义 存储过程是一组为了完成特定任务的sql语句 集 , 是 利 用 s q l s e r v e r 所 提 供 的transact-sql语言所编写的程序。 存储过程经编译和优化后存储在数据库服务器中。 存储过程可以由应用程序通过一个调用来执行,而且允许用户声明变量。 存储过程可以接收和输出参数、返回执行存储过程的状态值。2.存储过程的特点存储过程的特点 存储过程允许用户模块化程序设计,大大提高程序的设计效率。 存储过程可以强制应用程序的安全性,可以防止sql嵌入式攻击。 由于存储过程在服务器端存储和运行,并且第一次执行后在内存中保留,以后调用时不

3、需要再次从磁盘装载,能够实现更快的执行速度。 用户执行存储过程时,只需在客户端通过指明所调用的存储过程的名称来调用存储过程,可大大较少网络通信流量。 存储过程具有安全特性和所有权链接,可以执行所有的权限管理。3.存储过程的类型存储过程的类型 用户自定义存储过程 扩展存储过程 系统存储过程。 8.2 创建和执行存储过程创建和执行存储过程 1. 在图形界面下创建存储过程2. 用transact-sql语句创建不带参数的存储过程 3. 用transact-sql语句创建带参数的存储过程 4. 在图形界面下执行存储过程5. 使用transact-sql语句执行存储过程1. 在图形界面下创建存储过程在图

4、形界面下创建存储过程2. 用用transact-sql语句创建不带参语句创建不带参数的存储过程数的存储过程 语法:create procedure procedure_nameassql_statement【例8-1】 create procedure hotel_proc2asselect 身份证号,姓名,电话 from 客户信息3. 用用transact-sql语句创建带参数语句创建带参数的存储过程的存储过程 语法:create procedure procedure_name ;numberparameter data_type varying=defaultoutput,.n with

5、 recompile | encryption | recompile , encryptionfor replication as sql_statement .n 【例8-2】 create procedure hotel_proc3name varchar(12)asselect * from 客户信息where 姓名=name4. 在图形界面下执行存储过程在图形界面下执行存储过程5.使用使用transact-sql语句执行存储语句执行存储过程过程execute procedure_name【例8-4】declare temp varchar(12)set temp=李铭execute

6、hotel_proc3 temp【例【例8-3】创建一名为】创建一名为hotel_proc4的存储过程,实现前的存储过程,实现前n个自然数的求个自然数的求和功能,并使得该存储过程在每次执行时都被重新编译,且要求对其原和功能,并使得该存储过程在每次执行时都被重新编译,且要求对其原始始transact-sql语句进行加密。语句进行加密。create procedure hotel_proc4in int,sum int outputwith recompile,encryptionasdeclare i intdeclare s intset i=1set s=0while i=inbeginse

7、t s=s+iset i=i+1endset sum=s【例8-5】执行例8-3创建的存储过程hotel_proc4。declare s intexecute hotel_proc4 100,s outputprint 1+2+.+99+100=+str(s)8.3管理存储过程管理存储过程1. 使用“对象资源管理器”查看存储过程 2. 使用系统存储过程查看存储过程3. 使用“对象资源管理器”修改存储过程4. 使用transact-sql语句修改存储过程5. 使用“对象资源管理器”删除存储过程6. 使用transact-sql语句删除存储过程 1、使用、使用“对象资源管理器对象资源管理器”查看存

8、储查看存储过程过程 2、使用系统存储过程查看存储过程、使用系统存储过程查看存储过程 用 户 可 以 先 用 系 统 存 储 过 程sp_stored_procedures列出当前环境中所有的存储过程, 然后使用另一个系统存储过程sp_helptext查看某存储过程的正文信息。3、使用、使用“对象资源管理器对象资源管理器”修改存修改存储过程储过程4、使用、使用transact-sql语句修改存语句修改存储过程储过程alter procedure procedure_name ;numberparameter data_type varying=defaultoutput,.nwith recom

9、pile | encryption | recompile,encryptionfor replicationas sql_statement .n5、使用、使用“对象资源管理器对象资源管理器”删除存删除存储过程储过程6、使用、使用transact-sql语句删除存语句删除存储过程储过程drop procedure procedure_name ,number8.4创建和管理触发器创建和管理触发器 1.触发器定义触发器定义2.触发器的特点触发器的特点3.触发器的分类触发器的分类4.创建创建dml触发器触发器5.创建创建ddl触发器触发器 6.查看触发器查看触发器7.修改修改dml触发器触发器

10、8.修改修改ddl触发器触发器9.重命名触发器重命名触发器 10. 删除删除dml触发器触发器11. 删除删除ddl触发器触发器12. 禁用启用触发器禁用启用触发器1、触发器定义、触发器定义l触发器是一种特殊的存储过程,它包括了大量的transact-sql语句。l但是触发器又与一般的存储过程有着显著的区别,一般的储过程可以由用户直接调用执行,但是触发器不能被直接调用执行,它只能由事件触发而自动执行。 2、触发器的特点触发器的特点触发器是自动执行的,当用户对表中数据作了某些操作之后立即被触发。触发器可通过数据库中的相关表实现级联更改,实现多个表之间数据的一致性和完整性。触发器可以强制比用 ch

11、eck 约束定义的约束更为复杂的约束。与 check 约束不同,触发器可以引用其它表中的列。触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。3、触发器的分类触发器的分类ldml触发器lddl触发器4、创建、创建dml触发器触发器create trigger schema_name.trigger_nameon table | viewwith encryptionfor | after | instead ofinsert , update , deletewith appendnot for replicationas sql_statement ; ,.n | external

12、 name 【例8-10】创建名为hotel_trig1的insert触发器,当用户对数据库hotel的客户信息表进行insert操作时被触发,返回受影响的行数信息。 (1)编写创建触发器hotel_trig1的语句代码如下: create trigger hotel_trig1 on 客户信息 for insert as print 插入了一条客户记录 (2)可以触发该触发器的insert语句如下: insert into 客户信息 values王蒙【例8-11】创建名为hotel_trig2的update触发器,防止用户修改

13、客户信息表中的“姓名”列。(1)编写创建触发器hotel_trig2的语句代码如下:create trigger hotel_trig2on 客户信息for updateasif update (姓名)beginraiserror(不能修改姓名,16,10)rollback transactionend(2)可以触发该触发器的update语句如下:update 客户信息 set 姓名=王鹏 where 姓名=王蒙5、创建、创建ddl触发器触发器create trigger trigger_name on all server | databasewith encryptionfor | aft

14、er event_type | event_group ,.nas sql_statement ; ,.n | external name ; 【例8-12】创建名为hotel_trig3的ddl触发器,阻止删除数据库中的任何表。 (1)编写创建触发器hotel_trig3的语句代码如下: create trigger hotel_trig3 on database for drop_table as print 该触发器禁止删除数据库中的表,如果确实要删除表,请先禁用该触发器! rollback; (2)触发该触发器的drop table语句如下: drop table 业务记录6、查看触发

15、器查看触发器sp_help trigger_name:用于查看触发器的名称、属性、类型、创建时间等一般信息。sp_helptext trigger_name:用于查看触发器的正文信息。sp_depends trigger_name | table_name:用于查看触发器所引用的表或表所涉及的触发器。7、修改修改dml触发器触发器 alter trigger schema_name.trigger_nameon table | viewwith encryptionfor | after | instead ofdelete , insert , updatenot for replicati

16、onassql_statement ; .n | external name ;8、修改修改ddl触发器触发器alter trigger trigger_nameon database | all serverwith encryptionfor | afterevent_type ,.n | event_groupassql_statement ; | external name ; 9、重命名触发器、重命名触发器sp_rename old_name,new_name10、删除删除dml触发器触发器drop trigger schema_name.trigger_name ,.n ;11、触发器定义、触发器定义drop trigger trigger_name ,.n on database | all server ;12、禁用启用触发器禁用启用触发器禁用disable trigger schema_name.trigger_name ,.n | allon object_name | database | all server ;启用enable trigger schema_name.trigger_name ,.n | allon object

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论