[小学教育]09_SQL2000流程控制语句

上传人:豆浆 文档编号:49670341 上传时间:2018-08-01 格式:PPT 页数:33 大小:146.50KB
返回 下载 相关 举报
[小学教育]09_SQL2000流程控制语句_第1页
第1页 / 共33页
[小学教育]09_SQL2000流程控制语句_第2页
第2页 / 共33页
[小学教育]09_SQL2000流程控制语句_第3页
第3页 / 共33页
[小学教育]09_SQL2000流程控制语句_第4页
第4页 / 共33页
[小学教育]09_SQL2000流程控制语句_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《[小学教育]09_SQL2000流程控制语句》由会员分享,可在线阅读,更多相关《[小学教育]09_SQL2000流程控制语句(33页珍藏版)》请在金锄头文库上搜索。

1、Transact SQL 程序设计本章目标掌握BEGIN.END掌握IF.ELSE掌握WHILE(BREAK、CONTINUE)掌握RETURN掌握CASE掌握WAITFOR掌握GOTO程序流程控制Transact-SQL语言不但允许用户使用变量和函数, 同时还提供了控制流语言的特殊关键字来控制Transact- SQL语句、语句块和存储过程的执行过程。可以在 Transact-SQL语句、批处理和存储过程中使用这些关键 字。 如果在程序中不使用控制流语言,那么各Transact- SQL语句将按照其出现的顺序依次执行。而通过使用控制 流语言,不但可以改变这些语句的执行顺序,而且可以使 这些语

2、句互相连接、关联和相互依存。经常使用的控制流 关键字有BEGIN.END、IF.ELSE、WHILE、CASE、 RETURN、WAITFOR和GOTO语句,下面对这些控制流 关键字详细说明。BEGINEND语句块BEGIN.END语句用于将多条Transact-SQL语 句组合起来,组成一个逻辑块。当控制流语句必须执 行一个包含两条或两条以上Transact-SQL语句的语句 块时,使用BEGIN.END语句。BEGINEND语句通常用于下列情况:1、WHILE循环需要包含多条语句2、 CASE函数的元素需要包含多条语句3、 IF或ELSE子句中需要包含多条语句 【例】用beginend语句

3、块实现乘法运算begin declare a int,b int,c int set a=10 set b=20 set c=b*a select c end go【例】用beginend语句块实现:当变量a值大于10时,作加法运算;小于10时作乘法运算 create proc p_1 a int, b int, c int output as if a10beginset c=a+bselect cend elsebeginset c=a*bselect cend goIFELSE语句IFElSE语句用于条件的测试,系统将根据条件 满足与否来决定语句程序流。该语句中的ELSE子句是可 选的,

4、因此,在使用该语句时存在下面的两种语法形式:(1)不使用ELSE子句IF 逻辑表达式语句块 1语句块 2在使用这种形式时,如果IF语句中的逻辑表达式取值 为True,那么程序将执行语句块1;如果IF语句中的逻辑 表达式取值为False,程序将跳过语句块1直接执行语句块 2。【例】如果xs表中的总学分高于45分,则显示总学分高于45分,并返回该行数据.create proc p_2 id char(6) as if (select 总学分 from xs where 学号=id)45select id+的总学分高于45 select * from xs where 学号=id gocreate

5、proc p_3 text char(6) as if (select 总学分 from xs where 学号=text)45select (select 姓名 from xs where 学号=text)+的总学分高于45 select * from xs where 学号=text go【例】如果xs表中的总学分高于45分,则显示总学分高于45分,并返回该行数据.(2)使用ELSE子句 IF逻辑表达式语句块lELSE语句块2语句块3在使用这种形式时,如果IF语句中的逻辑表达式取 值为True,那么将执行语句块1,然后跳过ELSE子句 中的语句块2执行语句块3;如果IF语句取值为False

6、, 那么将跳过语句块1而执行EISE子句中的语句块2,然 后继续执行语句块3。IFELSE语句【例】如果xs表中的总学分高于45分,则显示总学分高于45分,否则显示总学分低于45分并返回该行数据.create proc p_5 text char(6) as if (select 总学分 from xs where 学号=text)45select text+的总学分高于45 elseselect text+的总学分低于45 select * from xs where 学号=text go【例】如果数据库原理的平均成绩高于75分,则显示平均成绩高于75分.Use xscj Declare t

7、ext1 char(20) Set text1=平均成绩高于75分 If (select avg(成绩) from xs,xs_kc,kc where xs.学号=xs_kc.学号 And xs_kc.课程号=kc. 课程号And kc.课程名=数据库原理)75Select text2 go【例】 IFELSE 与beginend结合使用create proc p_1 id char(6), cname char(3) As If (select 成绩 from xs_kc where 学号=id and 课程号=cname)=85beginselect 优秀select * from xs_

8、kc where 学号=id and 课程号=cnameend else -if (select 成绩 from xs_kc -where 学号=id and 课程号=cname)10select c c,a a ,b bbreakselect aaaaaaaendselect bbbbbbb go【例】 WHILEBREAK语句的使用CONTINUE:该语句在某些情况发生时,控制程序跳 出本次循环,重新开始下一次WHILE循环。其语法形式为 :WHILE逻辑表达式BEGIN.CONTINUE.END 注意 如果将SELECT语句用做WHILE语句的条件,那么 SELECT语句必须包含在英文括

9、号中。 WHILECONTINUE语句Create proc p_3 a int, b int, c int output aswhile (a=85 then 优秀when score=75 then 良好 when score=60 then 合格when score=85 print 优秀if score=75 print 良好 if score=60 print 合格if score75Return 1 Else Return 2 GO 【例】 检查学生的平均成绩,若大于75,返回状态代码1,否则将返回状态代码2WAITFOR语句通常使用WAITFOR语句来挂起执行连接,直到超 过指定

10、的时间间隔或到达一天中指定的时间。WAITFOR语句的语法形式有两种,分别通过指定 时间间隔和固定时间点来控制。语法:WAITFOR DELAY 时间间隔时间间隔将指定执行WAITFOR语句之前需要等待的 时间,最多为24小时。WAITFOR TIME 时间值时间值将指定WAITFOR语句将要执行的时间。begin waitfor delay 00:00:05 exec p_5 0 end【例】 WAITFOR DELAY语句begin waitfor delay 00:00:05 exec p_5 0 Select * from xs end时间格式 : hh:mm:ssbegin wait

11、for time 00:00:05 exec p_5 0 end【例】 WAITFOR TIME语句begin waitfor time 00:00:05 exec p_5 0 Select * from xs endGOTO语句功能:使Transact-SQL批处理的执行跳转到某个指定的标签执行GOTO语句和该标签之间的语句。语法:GOTO 标签名称使用批处理 编译前 批处理是指包含一条或多条Transact-SQL语句的语句组,这样的语句组将从应用程序一次性地发送到 SQLServer服务器执行。而SQL Server服务器将批处理语句编译成一个可执行单元,这种单元称为执行计划。 如果批处

12、理中的某一条语句发生编译错误,那么将导致 执行计划无法编译,从而批处理中的任何语句都无法执 行。编译后经过编译后的批处理仍然可能在运行时产生错误,通 常情况下,这些运行错误将导致批处理停止执行,因此, 发生错误的语句和位于它后面的语句将无法执行。但也有 少数的运行错误仅仅导致停止执行当前语句,而继续执行 批处理中其他所有语句。在书写批处理语句时,需要使用GO语句作为批处理 命令的结束标志。当编译器读取到GO语句时,它会把GO 语句前面所有的语句当作一个批处理,并将这些语句打包 发送给服务器。GO语句本身并不是Transact-SQL语句的 组成部分,它只是一个用于表示批处理结束的前端指令。使用批处理 Use northwind GO Select * from products where productid =5 GO select * from order details where orderid=10250 GO create view v_1 as select * from employees where employeeid=3 GO 【例】批处理

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号