WHILE…BREAK和CONTINUE语句(课件)-《MySQL数据库技术与应用》同步教学(清华)_第1页
WHILE…BREAK和CONTINUE语句(课件)-《MySQL数据库技术与应用》同步教学(清华)_第2页
WHILE…BREAK和CONTINUE语句(课件)-《MySQL数据库技术与应用》同步教学(清华)_第3页
WHILE…BREAK和CONTINUE语句(课件)-《MySQL数据库技术与应用》同步教学(清华)_第4页
WHILE…BREAK和CONTINUE语句(课件)-《MySQL数据库技术与应用》同步教学(清华)_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

第7章运算符、表达式和系统函数本章的学习目标:了解Transact-SQL语言的发展过程理解Transact-SQL语言附加的语言元素掌握常量、变量、运算符和表达式掌握流程控制语句掌握常用函数7.12.4WHILE…BREAK和CONTINUE语句WHILE…CONTINUE…BREAK语句用于设置重复执行的SQL语句或语句块的条件。只要指定的条件为真,就重复执行语句。

1.WHILE语句DECLARE@sINT,@numINTSELECT@s=0,@num=1WHILE@num<=100 BEGIN SET@s=@s+@num SET@num=@num+1 END PRINT'1+2+3+...+100='+CONVERT(CHAR,@s)DECLARE@xINTSET@x=1WHILE@x<=10 BEGIN PRINT@x SELECT@x=@x+1 END7.12.4WHILE…BREAK和CONTINUE语句2.BREAK语句

BREAK语句一般用在WHILE循环或IF….ELSE语句中,用于退出本层循环。【例】求1~100之间的累加和,当和超过1000时停止累加,显示累加和以及累加到的位置。DECLARE@iINT,@sINTSET@i=1SET@s=0WHILE@i<=100 BEGIN SET@s=@s+@i IF@s>=1000 BREAK SET@i=@i+1 ENDSELECT@sAS's',@iAS'i'7.12.4WHILE…BREAK和CONTINUE语句3.CONTINUE

语句CONTINUE命令可以让程序跳过CONTINUE命令之后的语句,回到WHILE循环的第一行命令。BREAK则让程序完全跳出循环,结束WHILE命令的执行。【例】求1~10之间的偶数和,并用CONTINUE控制语句的输出。DECLARE@xINT,@sumINTSET@x=1SET@sum=0WHILE@x<10 BEGIN SET@x=@x+1 IF@x%2=0 SET@sum=@sum+@x ELSE CONTINUE PRINT'只有@x是偶数才输出这句话' ENDprint@sum7.12.5GOTO语句无条件转移语句,使用GOTO语句可以将执行流程转移到标签指定的位置。由于该语句破坏了语句的结构,容易引发不易发现的问题,所以应该尽量减少或避免使用。DECLARE@xINTSET@x=1lab: PRINT@x SELECT@x=@x+1WHILE@x<=3 GOTOlab说明:标签是GOTO目标,它不仅仅标识了跳转目标,标签不隔离其前后语句。执行标签前面语句的用户跳过标签并执行标签后的语句。除非标签前面的语句本身是控制流语句(return),这种情况才发生。DECLARE@xINTSET@x=1lab: PRINT@x SELECT@x=@x+1WHILE@x<=10 GOTOlab【例】使用GOTO语句和WHILE语句输出1~10的所有整数。7.12.6WAITFOR语句

WAITFORDELAY’time’|TIME’time’作用:(1)延迟一段时间间隔执行(2)指定从何时起执行,用于指定触发语句块,存储过程以及事物执行时刻。WAITFORDELAY'00:00:03'PRINT'你好!'WAITFORTIME'10:52:00'PRINT'请获得格莱美最高荣誉奖的小王发言!'7.12.7RETURN语句RETURN[整型表达式]

RETURN语句用于从查询、存储过程或批处理中无条件地退出,位于RETURN语句之后语句将不执行。(1)存储过程可以给调用过程或应用程序返回整型值,当用于存储过程时,RETURN语句不能返回空值;(2)系统存储过程返回0值表示成功,返回非0值表示失败。【例】DECLARE@xINTSET@x=3IF@x>0 PRINT'遇到RETURN之前' RETURN PRINT'遇到RETURN之后'【例】USExscjIFEXISTS (SELECT*FROMcourse WHEREcname='高等数学') BEGIN PRINT'高等数学课程记录已存在!' RETURN ENDELSE INSERTINTOcourse VALUES('1001','高等数学','1005',4)7.13

批处理语句7.13.1批处理的基本概念批处理是包含一条或多条SQL语句的组,从应用程序一次性地发送到SQLServer执行SQLServer将批处理语句编译成一个可执行单元,此单元称为执行计划。执行计划中的语句每次执行一条。GO是批处理的标志,表示SQLServer将这些T-SQL语句编译为一个执行单元,提高执行效率。一般是将一些逻辑相关的业务操作语句,放置在同一批中,这完全由业务需求和代码编写者决定。7.13.2每个批处理单独发送到服务器每个批处理都被独立地处理,所以一个批处理中的错误不会阻止另一个批处理运行。为了将脚本分成多个批处理,要使用GO语句。【例】使用GO语句创建批处理。以下语句被分为了三个批处理。USEtempdbDECLARE@MyBacthvarchar(50)--这里声明的变量@MyBacth的作用域仅仅在这个批处理中!SELECT@MyBacth='第一个批处理'PRINT'第1个批处理执行完毕!'GOPRINT@MyBacth--这里将产生一个错误,因为@MyBacth没有在这个批处理中声明。PRINT'第2个批处理执行完毕!'GOPRINT'第3个批处理执行完毕!'--注意,即使第个批处理出错后,第个批处理仍将得到执行。7.13.3何时使用批处理批处理常被用在某些事情不得不发生在其他事情前面,或者不得不和其他事情分开的脚本中。使用以下几个命令时,必须独自成批处理,包括:CREATEDEFAULTCREATEPROCEDURECREATERULECREATETRIGGERCREATEVIEW7.13.4使用批处理建立优先级【例】演示使用批处理建立优先级。CREATEDATABASEDBase1USEDBase1CREATETABLETable1(col1int,col2int)分析器尝试验证代码时发现USE引用一个不存在的数据库,所以以上语句不能正确执行。这是因为缺少了批处理语句。正确的代码如下:CREATEDATABASEDBase1GO--此GO使创建数据库的语句成为了一个批处理并被发送到SQLServer成功得到执行USEDBase1CREATETABLETable1(col1int,col2int)【例】演示使用批处理建立优先级。演示使用批处理建立优先级,执行如下代码:USEDBase1ALTERTABLETable1ADDcol3intINSERTINTOTable1

温馨提示

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

评论

0/150

提交评论