




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库中的游标、存储过程和触发器原文:SQL-SERVER是一种关系型数据库管理系统,能够与WINDOWS平台紧密集成,以一种简单的方式来完成各种复杂的任务。SQL-SERVER管理大量数据,允许大量用户进行并发访问,维护数据的完整性和安全性。本文正是从游标、存储过程、触发器三个方面论述SQL-SERVER高效处理数据的方法。1 SQL-SERVER数据库简介SQL-SERVER是一个功能完备而强大的数据库管理系统。在SQL-SERVER中,数据和程序被划分为不同的逻辑组件,称为数据库对象,通过访问和管理数据库对象来访问和管理SQL-SERVER中的信息。表是SQL-SERVER中的最重要的数
2、据库对象。数据库被存储在一个或者多个数据库文件中。关系数据库系统是让用户用语句来获得和修改与实体相关的信息。所有的主流数据库都支持用标准的SQL语言来作业。2 SQL-SERVER数据库中的游标、存储过程、触发器2.1 游标的作用、功能及其优点SQL-SERVER中的“游标”是一种数据库对象,应用程序用它来对结果集实行“行集”操作。SQL-SERVER支持CLIENT游标、API SERVER游标和T-SQL游标。T-SQL游标和其它种类的游标区别是:T-SQL游标在存储过程、批处理、函数、或触发器中使用,用于重复对光标每一行的定制的处理。其它种类的游标被设计用于从客户应用程序中访问数据库信息
3、。本文以T-SQL游标为例。下面,声明一个FORWARD_ONLY游标,该游标允许对其数据进行修改。在查询分析器中执行下列语句:DECLARE JobsCursor CURSOR FORWARD_ONLY FORSELECT * FROM jobs WHERE min_lvl=75 FOR UPDATEOPEN JobsCursorFET CH JobsCursorUPDATE jobsSET max_lvl=100 WHERE CURRENT OF JobsCursorSELECT * FROM jobs WHERE min_lvl=75CLOSE JobsCursorDEALLOCATE
4、JobsCursor游标的优点:游标的这种行集设计方法是处理数据的一个强有力的工具。2.2 存储过程的作用、功能及其优点SQL-SERVER中的“存储过程”是一组预编译的SQL语句。T-SQL语句是充当SQL-SERVER数据库和用户应用程序间的编程接口。存储和执行T-SQL程序的方法有两种,一种是本地存储程序,另一种是将程序存储为SQL-SERVER中的“存储过程”,然后创建应用程序执行存储过程。通过编写存储过程来运行经常执行的管理任务,或者应用复杂的业务规则。SQL-SERVER中的存储过程分为“系统存储过程”和“用户定义的存储过程”。系统存储过程用以管理SQL-SERVER和显示有关数据
5、库和用户的信息,系统存储过程充当从系统表中检索信息的快捷方式,如:sp-stored-procedures列出当前环境中的所有存储过程。SQL-SERVER存储过程具有以下几点功能:a. 通过输入,输出参数与调用程序通讯;b. 返回一个称为返回代码的整型值,以表明过程的执行状态;c. 具有方便的重新编译其过程的方法,用EXECUTE与WITH RECOMPILE 子句;下面,声明一个简单的存储过程。在查询分析器中执行下列语句:create procedure ssintvalue1 int,intvalue2 int,inttotal int outputas select inttotal=
6、intvalue1+intvalue2godeclare inttotal intexec ss 15,9, inttotal outputprint the total of 15 and 9 is+convert(char(8, inttotal执行结果为:the total of 15 and 9 is 25存储过程具有以下优点:a. 允许模块化程序设计。b. 只需创建过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次。存储过程可独立于程序源代码而单独修改。c. 运行速度快。存储过程将比T-SQL批代码的执行要快。存储过程是被编译后存放在数据库服务器的过程高速缓存中,当使用时
7、,服务器不必再重新分析和编译它们。d. 减少网络流量。在网络中要发送的数百行代码,可由一条执行其过程代码的一条单独语句就可实现。e. 有安全机制。可授予没有直接执行存储过程中语句的权限的用户,也可执行该存储过程的权限。另外可以防止用户直接访问表,强制用户使用存储过程执行特定的任务。2.3 触发器的作用、功能及其优点SQL-SERVER中的“触发器”是一种强制业务规则和数据完整性的一种类型机制,它是一种特殊类型的存储过程。SQL-SERVER有两种类型的触发器:“AFTER 触发器”和“INSTEAD OF触发器”。触发器具有以下几点功能:a. 以“侦测”数据库内的操作,确保输入表中的数据的有效
8、性;b. 实现“层叠删除”,如在表INVENTORY和INVENTORY PROPERTY之间不存在外键,但用一个触发器可以监视INVENTORY表中记录的删除情况,及另一个表与之有关联的记录;c. 访问“INSERTED表”和”DELETED表中的内容。如对更新类型触发器的表来讲,将在“删除表”中存放旧值,而在“插入表”中存放新值。删除表和插入表是每个触发器都有的两个特殊的虚拟表,这两个表是逻辑表,并动态存贮在内存中;下面,将创建一个UPDATE触发器,以确保PRODUCTS表中现有的UnitsOnOrder和ReorderLevel列不会被修改为小于10的值。每次执行此操作时,都执行该触发
9、器。以下是在查询分析器中实现的T-SQL块:CREATE TRIGGER CheckProductUpdateON Products For UPDATE ASIF(SELECT UnitsOnOrder FROM INSERTED<10OR(SELECT ReorderLevel FROM INSERTED<10BEGINPRINT 错误,不能小于10!ROLLBACK TRANSACTIONEND执行下面的语句:UPDATE Products SET UnitsOnOrder=5 WHERE ProductID=5执行结果为:错误,不能小于10!保证了UnitsOnOrder和
10、ReorderLevel列不会被修改为小于10的值。d. “INSEAD OF触发器”提供了基于联接条件的视图所“不支持”的数据删除操作。INSTEAD OF触发器可以基于一个数据修改操作。这是SQL-SERVER触发器的另一个重要功能之一;下面创建一个基于employee表和publisher表的视图,要使对此视图进行更新,必须通过INSTEAD OF触发器来删除数据。以下是在查询分析器中的T-SQL块:CREATE VIEW Emp_pub AsSELECT emp_id,lname,job_id,pub_nameFROM employee e,publishers p WHERE e.p
11、ub_id=p.pub_idCREATE TRIGGER del_emp ON Emp_pubINSERTED OF DELETE ASDELETE employee WHERE emp_id IN (SELECT emp_id FROM DELETED执行下面的语句,删除数据。DELETE Emp_pub WHERE emp_id=POK93028Me. 触发器与存储过程类似,亦可进行加密处理。以保证代码的安全。触发器的优缺点:触发器常用于强制业务规则和数据完整性的强大工具。据资料分析,提倡简化使用触发器,没有必要使代码太复杂而让人费解。也不要太多使用触发器,因为触发器的执行,高度和管理很复
12、杂。3 游标、存储过程、触发器三者的联系SQL-SERVER数据库中的游标、存储过程、触发器三者从不同方面提高了数据处理能力。参见下面的图1.触发器是一种特殊类型的存储过程,它主要是通过事件进行触发而被执行的,而存储过程是通过存储过程的名字而被直接调用;游标可提供脚本,存储过程和触发器中使用的访问结果集中的数据的T-SQL语句。图1 高效处理数据图4 结论SQL-SERVER是一个关系数据库,用于各种企业组织及专业数据库和应用开发环境中。能迅速地设计和开发客户/服务器。游标的行集操作设计方法是一个强有力的工具,要合理使用游标。游标主要用于实现一些不能使用面向集合的语句实现的操作。T-SQL的存储过程的功能强大,甚至可以实现最复杂的商业事务,存储过程结合了过程和非过程两种方法。具有通讯、模块设计、执行快等优点。“触发器”是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江西加油罐采购合同范本
- 锡山区餐饮投资合同范本
- 物业空调安装免责协议书
- 灌溉水渠修复协议书范本
- 用工程货款买房合同范本
- 法律欠款回收协议书范本
- 腻子工工程分包合同范本
- 父母卖房给子女合同范本
- 机械厂临时工合同协议书
- 砖窑摊位转让协议书模板
- 2025委托代加工合同范本
- 护理管理计划
- IT主管岗位月度绩效考核表
- 我国非密敏感信息管理体系建设:思考与策略研究
- 社区护理考试题(含参考答案)
- (完整版)医疗安全管理制度
- Citect2018完整培训手册
- 仓储安全操作规程内容
- 2025年黑龙江省龙东地区中考语文试卷真题(含标准答案解析)
- 2025届江苏省镇江市联考英语七年级第二学期期末达标测试试题含答案
- 河道采砂防洪影响评价报告
评论
0/150
提交评论