《GTSQL程序设计》PPT课件_第1页
《GTSQL程序设计》PPT课件_第2页
《GTSQL程序设计》PPT课件_第3页
《GTSQL程序设计》PPT课件_第4页
《GTSQL程序设计》PPT课件_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1,第十章Transact-SQL程序设计,教学目标:通过本章的学习,应掌握以下内容:BEGIN和END要一起使用,将语句块包括起来。IFELSE语句实现根据条件来执行某些语句(块)。WHILE循环可根据条件多次重复执行语句(块)。GOTO语句将破坏程序结构化的特点,尽量不要使用。WAITFOR语句使SQLServer的处理在等待一段时间或到某一时刻时,继续执行。RETURN语句无条件从批处理、存储过程或触发器中退出,其后的任何语句将不再执行。PRINT语句为用户返回一个用户定义的消息。SET语句用以设置服务器处理特定条件的方式。,2,预备知识(问题),SQLServer是如何处理指令代码的?在数据库中编写代码有什么好处?减少网络通讯量减少部署成本实现瘦客户机模式,减少这个网络的构建成本使用户得到统一的结果加快程序的执行速度对数据库安全限制的补充避免冲突的发生保证事务的执行,3,服务器处理SQL语句的过程,当服务器接收到一个SQL查询语句时,将按照如下过程进行处理:分析过程。首先把这个批处理作为一个整体进行分析。在分析时,服务器检查命令动词和关键字的语法,验证表和字段的名字的合法性。再优化过程。在优化阶段,服务器会确定完成一个查询的最有效的办法。编译过程。在编译阶段,将生成这个批处理的可执行代码。执行过程。最后,这个批处理中的语句将在运行阶段一句一句地执行。,4,SQLServer支持的数据类型,在SQLServer2005中,数据类型通常指字段列、存储过程参数和局部变量的数据特征。数据类型由SQLServer系统定义,通常把这种数据类型称为系统数据类型。SQLServer也支持用户定义的数据类型。在表(Table)中创建字段列或声明一个局部变量时,都必须为它选择一种数据类型,选择后就确定了如下特征:在字段列中可以存储任何数据(数值、字符串、日期值等)。对于数值或日期数据类型,确定了允许在字段列中使用值的范围。对于字符串和二进制数据类型,确定了允许在字段列中,存储的最大数据长度。,5,用户定义数据类型,SQLServer允许在系统数据类型的基础上,建立用户自定义的数据类型(UDT)。用户定义数据类型可以应用在ALTERDATABASE和CREATEDATABASE语句中,并且可以将默认规则应用在用户定义的数据类型上,为用户定义数据类型的字段提供默认值和完整性约束。,6,系统表systypes,在SQLServer中,所有的数据类型都不是关键字,它们均被当作数据存储在SQL数据库级的系统表systypes中,systypes既包括系统数据类型,也包括用户定义的数据类型。systypes表中包含了本章所介绍的所有数据类型,并且包含了许多数据类型的NULL值。,7,注释符,在Transact-SQL中可以使用两类注释符:ANSI标准的两个连字符构成的注释符-,用于单行注释。与C语言相同的程序注释符号,即/*/。“/*”用于注释文字的开头,“*/”用于注释文字的结尾。可在程序中标识多行文字为注释。,8,块语句BEGINEND,IF,WHILE等语句只允许包含一条语句,但实际操作过程中,一条语句往往不能满足复杂程序的设计要求。这时,需要使用BEGINEND语句将多条SQL语句封装起来构成一个语句块。处理时,整个语句块视为一条语句。语法BEGINEND说明尽管BEGINEND几乎可以用在程序中的任何地方,但它最常见的用法是和WHILE或IFELSE组合使用。在BEGINEND中可以嵌套另外的BEGINEND来定义另一程序块。,9,判断语句IFELSE,语法IFELSE说明其中可以是各种表达式的组合,但表达式的值必须是逻辑值“真”或“假”。ELSE子句是可选的。最简单的IF语句没有ELSE子句部分。IF.ELSE用来判断当某一条件成立时,执行某段程序,条件不成立时执行另一段程序。若不使用语句块,IF或ELSE只能执行一条命令。IF.ELSE语句可以进行嵌套。,10,IFEXISTS语句,IFEXISTS语句用于检测数据是否存在,而不考虑与之匹配的总共行数。语法:IFNOTEXISTS(SELECT子查询)ELSE说明:SQL服务器找到第一个匹配的行(记录),就停止执行SELECT子查询语句。IF语句最多可嵌套150层。,11,CASE语句-1,多分支选择结构CASE,通常是用n个条件来控制n+1个操作的。CASE语句主要是用来取代嵌套的IF语句。CASE语句有两种格式:格式一:CASE算术表达式WHEN算术表达式THEN算术表达式WHEN算术表达式THEN算术表达式ELSE算术表达式END,12,CASE语句-2,格式二:CASEWHEN条件表达式THEN算术表达式WHEN条件表达式THEN算术表达式ELSE算术表达式ENDCASE语句可以嵌套到任何SQL命令中。例10-5:调整学生的成绩。凡低于70分的增加10%,7080分的增加8%,8090分的增加5%,其他的增加2%。,13,循环语句WHILE-1,语法:WHILE条件表达式BEGINSQL命令行或语句块BREAKCONTINUESQL命令行或程序块END,14,循环语句WHILE-2,说明:WHILE语句在条件表达式成立(布尔表达式为“真”)时,重复执行命令行或语句块,直到条件表达式的值为逻辑“假”时,结束执行循环体。CONTINUE语句可以让程序跳过CONTINUE语句之后的命令行或语句块,回到WHILE的条件表达式,重新判断其逻辑值。BREAK语句则让程序跳出循环体,结束WHILE语句的执行。WHILE语句也可以嵌套。,15,跳转语句GOTO,语法:GOTO标识符说明:GOTO语句用来改变程序执行的流程,使程序跳到标有标识符的指定的程序行,再继续往下执行。作为跳转目标的标识符,可以是数字与字符的组合,但必须以:结尾。在GOTO语句行标识符后不必跟:,16,事件处理语句WAITFOR-1,语法:WAITFORDELAY时间|TIME时间|ERROREXIT|PROCESSEXIT|MIRROREXIT说明:WAITFOR语句用来暂时停止程序执行,直到所设定的等待时间已过或所设定的时间已到,才继续往下执行。时间必须为datetime类型的数据,如11:15:27,最多可达24小时。,17,事件处理语句WAITFOR-2,各关键字含义如下:DELAY:用来设定等待时间,最多可达24小时。TIME:用来设定等待结束的时间点。ERROREXIT:直到处理非正常中断。PROCESSEXIT:直到处理正常结束或非正常中断。MIRROREXIT:直到镜像设备失败。例10-8:等待2小时29分零59秒后,才执行INSERT语句。WAITFORDELAY02:29:59INSERTINTO学生表(学号,姓名)VALUES(200307103,许晴莎),18,RETURN语句-1,语法:RETURN(整数值)说明:RETURN语句用于结束当前程序的执行,返回到上一个调用它的程序或其他程序,在括号内可指定一个返回值。一般情况下,RETURN语句后不需要任何表达式,但如果在应用程序或存储过程中调用了一个存储过程,通常在被调用的过程中使用RETURN语句返回一个整数值,以便向父进程报告本进程的执行状态。例:DECLAREx,int,yintSELECTx=1,y=2IFxyRETURN(1)ELSERETURN(2),19,RETURN语句-2,如果没有指定返回值,SQLServer系统会根据程序执行结果,返回一个内定值,如下表所示:,20,PRINT语句,消息是可以小于256个字符的文本。PRINT语句只能传输文本型的字符串,或单个字符型变量。PRINT语句也可以传递全局变量,但只能是字符类型的全局变量如:version。语法:PRINT任何ASCII文本|局部变量名|全局变量|字符串表式说明:PRINT语句向客户端返回一个用户自定义的信息,即显示一个字符串(其最大长度为255个字符)、局部变量或全局变量。例:向消息处理程序传递一个字符串的例子。PRINTThisisamessage,21,关于错误处理,在SQLServer中,错误信息包括四项内容:错误号:错误严重性状态消息例:下面的语句将向系统错误表中添加一条自定义信息。Sp_addmessage51000,12,命令中包含了无效的用户标识符,US-English,TRUE例:下面的语句将改变消息的系统日志行为。Sp_altermessage51000,WITHLOG,FALSE例:下面的语句将上例中的自定义消息从系统表中删除。Sp_dropmessage51000,22,RAISERROR语句-1,语法:RAISERROR(msg_id|msg_str,severity,state,argument,n)WITHLOG说明:msg_id:存储于sysmessages表中用户定义的错误信息。用户定义的错误信息的错误号应大于50000msg_str:如果该信息包含的字符超过400个,则只能显示397个并将添加一个省略号以表示该信息已被截断。所有特定消息的标准消息ID是14000。,23,RAISERROR语句-2,severity:用户定义的与消息关联的严重级别。用户可以使用从0到18之间的严重级别。19到25之间的严重级别只能由sysadmin固定服务器角色成员使用。要使用19到25之间的严重级别,必须选择WITHLOG选项。state:从1到127的任意整数,表示有关错误调用状态的信息。State的赋值默认为1。agrument:用于取代在msg_str中的变量或取代对应于msg_id的消息,替代参数不能超过20个。,24,设置选项SET,SET的语法格式:SETconditionon|of

温馨提示

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

评论

0/150

提交评论