欢迎来到天天文库
浏览记录
ID:41037555
大小:309.00 KB
页数:33页
时间:2019-08-14
《第9章 用T-SQL编程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、第9章用T-SQL编程第9章用T-SQL编程ÿ本章学习目标Transact-SQL相对于ANSISQL最大的不同在于它提供了丰富的编程结构。灵活使用这些编程的控制结构,用户就可以实现任意复杂的应用规则,从而可以编出任意复杂的查询控制语句。在SQL-Server2000中,用户还可以使用T-SQL语句编写服务器端的程序,这些程序由批处理、注释、程序中使用的变量、改变批中语句的执行顺序的流控制语言、错误和消息的处理等成分组成。本章主要对使用T-SQL语句编程方面的内容进行详细的讲解,在讲解的过程中采用循
2、序渐进的方式,首先对多条语句的执行过程进行讲解,以激发读者的学习兴趣,接下来才对编程中具体涉及到的变量、语句、函数以及事务进行详细讲解。通过对本章的学习,读者应熟悉在SQLServer中执行多条语句的方式,熟悉变量以及事务等的定义、应用或调用,并能掌握使用各种流控制语句进行编程的方法。ÿ学习重点与难点þ执行多条T-SQL语句þ变量和流控制语句þ系统函数和用户自定义函数þ事务及SQL-Server的锁机制9.1执行多条T-SQL语句当要完成的任务不能由单独的T-SQL语句来完成时,SQLServer提
3、供了批、脚本、存储过程以及触发器等几种方式来组织多条T-SQL语句。本节着重介绍批和脚本的内容,而关于存储过程和触发器的内容将在后面两章讨论。9.1.1批所谓批,是从客户机传递到服务器上的一组完整的数据和SQL指令。一个批是由一条或多条T-SQL语句组成的语句集,这些语句一起提交给服务器并在服务器端作为一个整体来执行。SQLServer将批中的语句作为一个整体编译为一个执行计划。因为批中的语句是作为一个整体提交给服务器的,所以可以节省系统开销。在查询分析器中,使用“GO”命令标志一个批的结束。GO不
4、是通用的T_SQL语句,它的作用只是通知查询分析器有多少语句包含在当前批中,查询分析器将两个GO之间的语句组成一个字符串交给服务器去执行。基于ODBC或OLEDB应用程序编程接口的应用程序在试图执行GO语句时,会产生一个错误。例如,下面的例子包括三个批:203第9章用T-SQL编程CREATETABLEdoc_exd(column_aINT)GOINSERTINTOdoc_exdVALUES(-1)GOALTERTABLEdoc_exdWITHNOCHECKADDCONSTRAINTexd_chec
5、kCHECK(column_a>1)因为SQLServer为一个批生成一个单独的执行计划,所以一个批本身应该是完整的。不能在一个批中引用其他批定义的变量,也不能将注释从一个批开始,在另一个批中结束。下面的一组语句执行时就会出错:USENorthwindGODECLARE@MyVarINT/*Startofthesplitcomment.GOEndofthesplitcomment*/SELECT@MyVar=29GO在查询分析器中执行这组语句会返回以下错误信息:缺少注释的结尾标记'*/'。在关键字'
6、End'附近有语法错误。必须声明变量'@MyVar'。SQLServer统一优化、编译和执行一个批中的语句。如果在批中的语句出现编译错误(如语法错误),那么将不能生成执行计划,该批中的任何一个语句都不会被执行。有些情况下,如果在SQL指令中存放着一些像数据类型无法自动转换等错误的时候,编译器无法识别这些错误。在这种情况下,这个批处理只有在执行过程中才会出错。一般说来在这个错误指令以前的所有指令都会执行成功。在错误指令以后的指令将会视错误指令所引起的错误严重程度而决定是否执行下去。如果出现了运行时期的
7、错误(比如违反约束或数字溢出),这时可能会有两个结果:u多数运行时错误将停止执行批处理中当前语句和它之后的语句。u少数运行时错误(如违反约束)仅停止执行当前语句,而继续执行批中其它语句。无论是哪种运行时期错误,在出错语句之前的语句的执行结果不会受到影响。惟一的例外是如果批处理在事务中而且错误导致事务回滚。批有如下一些限制:uCREATEDEFAULT、CREATEPROCEDURE、CREATERULE、CREATETRIGGER和CREATEVIEW语句不能与其他语句位于同一个批中。u不能在同一个
8、批处理中修改一个表的结构,然后引用刚修改的新列。u如果批的第一条语句是EXECUTE(执行)语句,则EXECUTE关键字可以省略,否则,不能省略。9.1.2脚本脚本是一系列顺序提交的批,由这些批组成的一系列T-SQL语句存储在一个文件中,该文件可以在查询分析器中执行。执行脚本就是依次执行其中的T-SQL语句。203第9章用T-SQL编程脚本用于保存重新创建数据库对象或重复执行的语句,可以使用查询分析器或任何文本编辑器编写,带.sql扩展名保存。一个脚本可以包含一个或多
此文档下载收益归作者所有