




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
,.,1,第12章Transact-SQL的高级应用,12.1使用Transact-SQL开发存储过程,12.2使用Transact-SQL开发触发器,12.3使用Transact-SQL开发游标,12.4使用Transact-SQL的其他技巧,目录,.,12.1使用Transact-SQL开发存储过程存储过程是SQLServer上的一个非常有用的特性。存储过程由被编译在一起的一组SQL语句组成,并可以通过调用单个命令来执行。它们对于维护那些在SQLServer上运行应用程序时所需的代码是非常有用的。SQLServer也预安装了许多系统存储过程,这些系统存储过程在服务器上运行,用于收集关于服务器的专门信息。,.,12.1.1存储过程的概念存储过程只是一个SQL语句组合,它们被编译在一起,能通过单个命令而被执行。存储过程能用于向用户返回数据、在表中插入新数据、修改数据、执行系统函数和管理任务。总之,它们是SQLServer中功能非常强大的一部分,它能使用户的工作更轻松。,.,12.1.2创建存储过程的方法开发存储过程可以用两个方法,一个是SQLServer的企业管理器,另一个是用SQLServerzid自带的查询分析器。两者能实现同样的功能。1.使用SQLServe企业管理器创建存储过程要使用SQLServer企业管理器来创建一个存储过程。2.使用查询分析器来建立存储过程,.,12.1.3存储过程的用途存储过程的用途几乎是无限的。从返回SELECT语句的结果并用于用户报表到执行复杂的数据有效性校验,可以用存储过程来做任何事。至于说存储过程到底能做什么,部分地取决于支持前面列出的两个观点中的哪一种。以下是存储过程的一些用途:(1)模块化的程序设计。(2)快速执行。(3)网络通信量。(4)安全性。,.,12.2使用Transact-SQL开发触发器触发器是一系列在表中的数据修改时要执行的SQL语句的集合。可以创建一些在表中的数据在插入,修改或删除时触发的触发器。12.2.1创建触发器使用命令CREATETRIGGER来创建触发器。,.,可以使用语句CREATETRIGGER来创建一个触发器。与存储过程不同,每个触发器都必须和某一个特定的表相关,而且每一个触发器都只和作用于该表上的一个或多个动作有关,下面就是CREATETRIGGER语句的一个简单例子:CREATETRIGGERtr_webusers_insertONwebusersFORINSERTASEXECUTEmaster.xp_sendmailadministratorNewuserregistered!该触发器的名称为tr_webusers_insert。可以使用任何想用的名称来命名触发器,但是每个触发器都必须有惟一的名称。在触发器的名称内包含和触发器相关联的表和动作作为触发器名称的一部分是一个很好的主意,.,对于触发器,请牢记以下重要几点:(1)触发器和某指定的表格有关,当该表格被删除时,任何与该表有关的触发器同样会被删除。(2)在一个表上的每一个动作只能有一个触发器与之关联。(3)在一个单独的表上,最多只能创建三个触发器与之关联,一个INSERT触发器,一个DELETE触发器和一个UPDATE触发器。(4)当添加第二个由相同动作触发的触发器时,第一个触发器会在没有任何警告信息的条件下被删除,.,12.2.2使用Inserted和Deleted表这里介绍两个特殊的表,Inserted表和Deleted表。此二表仅仅在触发器运行时存在。可以使用两个表来精确地确定触发器的动作对数据表所做的修改。,.,12.3使用Transact-SQL开发游标12.3.1游标简介关系数据库中的操作会对整个行集产生影响。由SELECT语句返回的行集包括所有满足该语句WHERE子句中条件的行。由语句所返回的这一完整的行集被称为结果集。应用程序,特别是交互式联机应用程序,并不总能将整个结果集作为一个单元来有效地处理。这些应用程序需要一种机制以便每次处理一行或一部分行。游标就是提供这种机制的结果集扩展。游标通过以下方式扩展结果处理:(1)允许定位在结果集的特定行。(2)从结果集的当前位置检索一行或多行。(3)支持对结果集中当前位置的行进行数据修改。(4)为由其他用户对显示在结果集中的数据库数据所做的更改提供不同级别的可见性支持。(5)提供脚本、存储过程和触发器中使用的访问结果集中的数据的Transact-SQL语句。,.,12.3.2在开发过程中使用游标1.监视Transact-SQL游标的活动2.使用游标变量3.引用Transact-SQL游标,.,12.4使用Transact-SQL的其他技巧Transact-SQL有很多技巧,使用的好,可以提高开发效率和程序运行的效率,能够方便调试错误。12.4.1在屏幕上显示数据一般的,当在执行批处理时并不需要在屏幕上打印任何结果。然而在调试一组SQL语句时,PRINT语句就能派上用场。下面就是PRINT语句的一个简单例子:DECLAREmyvariableVARCHAR(30)SELECTmyvariable=HelloThere!PRINTmyvariable不能使用PRINT语句在屏幕上打印除字符类型以外的其他数据类型,.,12.4.2注释SQL语句当SQL语句集合变得越来越大而非常复杂时,需要对语句进行注释。可以使用两种方法在语句中添加注释。假如需要添加单行的注释时,可以在一行后使用两个连字符,如下所示:DECLAREmyvariableDATETIMESELECTmyvariable=GETDATE()GetsTheCurrentDateSELECTDATENAME(dw,myvariable)GetsTheDayoftheWeek,.,12.4.3使用条件语句当想根据某些条件来执行一个或多个SQL语句时,需要使用conditional,请看下面的例子:IF(SELECTCOUNT(*)FROMAuthors)10PRINTMorethan10Authors!假如在表Authors中有多于10个的作者,该语句就会打印Morethan10Authors!结果。仔细观看该条件语句的结构。注意到缺了什么?这里没有THEN语句。假如在条件语句中包含了THEN,就会产生错误。,.,小结本章主要介绍了Transact-SQL的一些高级应用,首先是存储过程的编写,大家应该首先明确的是存储过程是相当重要的数据库应用,它可以减轻网络流量,同时因为它是编译过的,所以在速度上会大大提高。它一般用于那些有级联处理的地方,比如对一基本表的处理要联系到其他几张基本表,那么这种“联系”的处理就可以写入存储过程之中。接着介绍了触发器的开发,触发器和某指定的表格有关,当该表格被删除时,任何与该表有关的触发器同样会被删除。在一个表上的每一个动作只能有一个触发器与之关联,不能有两个或者更多。触发器只有在其FOR短语后面指定的动作发生时执行。然后介绍了游标的开发,一般的应用程序需要一种机制以便
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 课件橡胶卷教学课件
- 课件模板色彩搭配
- 传统民居绘画课件
- 中班课件和教案
- 商务人才核心能力培养
- 广东工程力学自考试题及答案
- 广东法律思想自考试题及答案
- 恐怖思维考试题及答案
- 课程实施考试题及答案
- 白酒微生物培菌工应急处置考核试卷及答案
- 2025年第一届安康杯安全生产知识竞赛试题题库及答案(完整版)
- 贵州省贵阳市2026届高三上学期摸底考试数学试卷含答案
- 公司年度员工安全教育培训计划
- 生育津贴相关管理办法
- 2023-2025年中考语文试题分类汇编:记叙文阅读(辽宁专用)解析版
- 2025年杭州市上城区望江街道办事处 编外人员招聘8人考试参考试题及答案解析
- 百果园水果知识培训资料课件
- 2025年公路检测工程师《水运结构与地基》试题及答案
- 隔爆水棚替换自动隔爆装置方案及安全技术措施
- 叙事医学培训课件
- 智能电子储物柜控制系统方案
评论
0/150
提交评论