ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:70.98KB ,
资源ID:12305315      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12305315.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(存储过程和触发器.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

存储过程和触发器.docx

1、存储过程和触发器第9章 存储过程和触发器教学目标:掌握存储过程和触发器的基本概念,学会编写简单的存储过程和触发器,对存储过程和触发器的实际应用有较好的理解。9.1 存储过程9.1.1 存储过程的基本知识1. 概念存储过程(Stored Procedure)是一组编译好存储在服务器上的完成特定功能T-SQL代码,是某数据库的对象。客户端应用程序可以通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行存储过程。2. 优点使用存储过程而不使用存储在客户端计算机本地的 T-SQL 程序的优点包括:(1)允许标准组件式编程,增强重用性和共享性(2)能够实现较快的执行速度(3)能够减少网络流量

2、(4)可被作为一种安全机制来充分利用3. 分类在SQL Server 2005中存储过程分为三类:系统提供的存储过程、用户自定义存储过程和扩展存储过程。系统:系统提供的存储过程,sp_*,例如:sp_rename扩展:SQL Server环境之外的动态链接库DLL,xp_远程:远程服务器上的存储过程用户:创建在用户数据库中的存储过程临时:属于用户存储过程,#开头(局部:一个用户会话),#(全局:所有用户会话)9.1.2 创建用户存储过程1. 使用存储过程模板创建存储过程在【对象资源管理器】窗口中,展开“数据库”节点,再展开所选择的具体数据库节点,再展开选择“可编程性”节点,右击“存储过程”,选

3、择“新建存储过程”命令,如图所示:在右侧查询编辑器中出现存储过程的模板,用户可以在此基础上编辑存储过程,单击“执行”按钮,即可创建该存储过程。例9-1:创建一个简单的存储过程。USE LibraryGOCREATE PROCEDURE borrowed_numASSELECT Rname,LendnumFROM ReaderWHERE Rname=赵良宇 存储过程建好了,什么时候,怎么用呢?执行存储过程:borrowed_num 或EXEC borrowed_num执行结果:2. 使用T-SQL语句创建表格式:CREATE PROC 过程名形参名 类型变参名 类型 OUTPUTAS SQL语句

4、例9-2:创建一个多表查询的存储过程。USE LibraryGOCREATE PROCEDURE borrowed_book1ASSELECT r.RID,r.Rname,b.BID,k.Bname,b.LendDateFROM reader r INNER JOIN borrow bON r.RID=b.RID INNER JOIN book kON b.BID=k. BIDWHERE Rname=程鹏执行存储过程:borrowed_book1 或EXEC borrowed_book1执行结果:9.1.3 存储过程的参数1. 输入参数(值参)例9-3:输入参数为某人的名字。USE Libra

5、ryGOCREATE PROCEDURE borrowed_book2name varchar(10) -形式参数AsSELECT r.RID,r.Rname,b.BID,k.Bname,b.LendDateFROM reader r INNER JOIN borrow bON r.RID=b.RID INNER JOIN book kON b.BID=k. BIDWHERE Rname=nameGO执行存储过程:直接传值:EXEC borrowed_book2 程鹏 -实参表变量传值:DECLARE temp1 char(20)SET temp1=杨树华EXEC borrowed_book2

6、 temp1 -实参表执行结果:例9-4:使用默认参数USE LibraryGOCREATE PROCEDURE borrowed_book3name varchar(10)=NULL -默认参数ASIF name IS NULL SELECT r.RID,r.Rname,b.BID,k.Bname,b.LendDate FROM reader r INNER JOIN borrow b ON r.RID=b.RID INNER JOIN book k ON b.BID=k.BIDELSE SELECT r.RID,r.Rname,b.BID,k.Bname,b.LendDate FROM r

7、eader r INNER JOIN borrow b ON r.RID=b.RID INNER JOIN book k ON b.BID=k.BID WHERE Rname=nameGO执行存储过程:EXEC borrowed_book32. 输出参数(变参)例9-5:利用输出参数计算阶乘。USE LibraryIF EXISTS(SELECT name FROM sysobjects WHERE name=factorial AND type=P) DROP PROCEDURE factorialGOCREATE PROCEDURE factorial in float, -输入形式参数

8、out float OUTPUT -输出形式参数ASDECLARE i intDECLARE s floatSET i=1SET s=1WHILE i0 PRINT 没有过期!ELSE PRINT 过期+convert(char(6),days)+天GO应用:USE LibraryUPDATE borrow SET ReturnDate=2007-12-12WHERE RID=2000186010 and BID=TP85-08GO执行结果:过期-157 天(1 行受影响)例9-9:对Library库中Reader表的 DELETE操作定义触发器。USE LibraryGOIF EXISTS(

9、SELECT name FROM sysobjects WHERE name=reader_d AND type=TR)DROP TRIGGER reader_dGOCREATE TRIGGER reader_dON ReaderFOR DELETEASDECLARE data_yj intSELECT data_yj=LendnumFROM deletedIF data_yj0 BEGIN PRINT 该读者不能删除!还有+convert(char(2),data_yj)+本书没还。 ROLLBACK ENDELSE PRINT 该读者已被删除!GO应用:USE LibraryGODELET

10、E Reader WHERE RID=2005216119执行结果:该读者不能删除!还有4 本书没还。9.2.3 创建DDL触发器DDL 触发器会为响应多种数据定义语言 (DDL) 语句而激发。这些语句主要是以 CREATE、ALTER 和 DROP 开头的语句。DDL 触发器可用于管理任务,例如审核和控制数据库操作。语法形式:CREATE TRIGGER trigger_name ON ALL SERVER|DATABASEWITH ,.n FOR|AFTER event_type|event_group,.nAS sql_statement; .n|EXTERNAL NAME ; 其中::

11、=ENCRYPTION EXECUTE AS Clause := assembly_name.class_name.method_name 例9-10:使用DDL触发器来防止数据库中的任一表被修改或删除。CREATE TRIGGER safetyON DATABASE FOR DROP_TABLE, ALTER_TABLEASPRINT You must disable Trigger safety to drop or alter tables!ROLLBACK 例9-11:使用 DDL 触发器来防止在数据库中创建表。CREATE TRIGGER safetyON DATABASEFOR C

12、REATE_TABLEASPRINT CREATE TABLE Issued. SELECTEVENTDATA().value(/EVENT_INSTANCE/TSQLCommand/CommandText)1,nvarchar(max) RAISERROR (New tables cannot be created in this database., 16, 1) ROLLBACK 9.2.4 修改触发器ALTER TRIGGER 触发器9.2.5 删除触发器DROP TRIGGER 触发器9.2.6 查看触发器sp_helptext trigger_namesp_helptrigger table_name9.3 小结本章介绍了存储过程和触发器的概念和创建、调用方法。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1