T-SQL流程控制语句.ppt
第8章 T-SQL语言 流程控制语句,主讲人:段利文,第24讲,复习:,使用批处理、脚本、注释标识符常量书写格式取决于它所表示的值的数据类型。变量局部变量:用户自己定义的变量;以符号开头;先声明后使用全局变量:系统定义的变量;以 符号开头;用户不能修改其值。T-SQL系统内置函数T-SQL的运算符,第8章 T-SQL语言流程控制语句教学内容,基础知识:流程控制语句概述beginend语句ifelse、if exists语句while、break和continue语句waitfor语句return 语句,第8章 T-SQL语言流程控制语句学习目标,认知目标:了解T-SQL语言语句块、条件语句、循环语句的基本格式能力目标:能运用各种流程控制语句正确编写SQL程序(重点、难点),一、流程控制语句概述,T-SQL语言与其它高级语言一样,提供了可以控制程序执行流程的语句。使用这些流程控制语句可以更好地组织和控制程序的流程。类型语句块:beginend条件语句:ifelse、if exists循环语句:while、break、continue等待语句:waitfor返回语句:return转移语句:goto(了解),二、beginend语句,语句格式:begin 语句|语句块 end作用可以将多条T-SQL语句封装起来,构成一个独立的语句块。Begin和end必须成对出现。,语句块的开始,语句块的结束,三、ifelse、if exists语句,语法格式:if 逻辑表达式 语句|语句块 else 语句|语句块 作用:按条件控制程序的执行。当条件满足时,则在执行条件之后的T-SQL 语句。否则,就执行else后的T-SQL语句(若ELSE部分存在)。,if not exists(select语句)语句|语句块 else 语句|语句块,三、ifelse语句,实例1:查询学号为“020101”的平均分是否超过了85分,若超过,则输出“XX考出了高分”的信息;否则输出“考的一般”。use xscjdeclare xm varchar(10)if(select avg(成绩)from xs_kc where 学号=020101)85 begin select xm=姓名 from xsqk where 学号=020101 print xm+考出了高分 end else print 考的一般,从学生情况表中取姓名,求指定学号的平均成绩,三、ifelse语句,课堂练习1:测试xscj库的xsqk表中是否有“田丽”这个人,若有则显示其信息,若无则显示“没有XX这个人!”。use xscjdeclare xm varchar(20)select xm=田丽if exists(select*from xsqk where 姓名=xm)select*from xsqk where 姓名=xm else print 没有“+xm+”这个人!,测试“学生情况表”中是否有这个人,四、while、break和continue语句,语法格式:while 逻辑表达式 语句|语句组 break 语句|语句组 continue 说明:Break用于退出最内层的while循环。Continue用于重新开始一次while循环。,四、while、break和continue语句,实例2:计算1到100中奇数的和,要求显示为“奇数和为:XX”。declare i int,sum intselect i=1,sum=0while i 100 begin set sum=sum+i set i=i+2 endprint 奇数和为:+cast(i as varchar(5),四、while、break和continue语句,课堂练习2:计算500以内能被3或7整除的数。declare i intselect i=1while i 500 begin if i%3=0 or i%7=0 print i set i=i+1 end,五、waitfor语句,语法格式:waitfor delay 时间|time 时间 作用:指定其后的语句在某一时刻或在一段时间间隔后继续执行。说明:Delay:等待一个指定的时间间隔,最长24小时Time:等待一个指定的时间点(即从某个时刻开始执行一个操作)。时间:指定等待的时间。时间必须为datetime类型,不能包括日期。,五、waitfor语句,实例3:分析下列语句的功能。print 执行waitfor之前,秒数为:+cast(datepart(ss,getdate()as varchar(5)waitfor delay 00:00:06print 执行waitfor之后,秒数为:+cast(datepart(ss,getdate()as varchar(5),五、waitfor语句,课堂练习4:延时6秒后查询xsqk的信息;到下午4点15分30秒查询xs_kc表。waitfor delay 00:00:06use xscjselect*from xsqkgowaitfor time 16:15:30use xscjselect*from xs_kc,六、return语句,语法格式:return 整型表达式 作用:无条件地从过程、批或语句块中退出,在return之后的其他语句不会被执行。说明:Return可以在过程、批和语句块中的任何位置使用。Return与break很相似,不同的是return可以返回一个整数。,六、return语句,实例4:分析下列语句的功能。use xscjif not exists(select*from xsqk where 姓名=田力)begin print 没有找到!return end print 已找到!return,本课小结,流程控制语句概述beginend语句ifelse、if exists语句while、break和continue语句waitfor语句return语句,课余作业,课外练习(补充):Beginend语句可以将多条T-SQL语句封装起来,构成一个独立的_。Break用于退出_的while循环;Continue用于_while循环。Waitfor语句用于指定其后的语句在_或在_后继续执行。编程计算在xsqk表中年龄大于21的学生人数,如果人数不为0,则输出相应人数,如果人数为0,则输出“没有年龄大于21的学生”。上机准备:流程控制语句练习。,第4题答案:,use xscjgodeclare n intselect n=count(*)from xsqk where datediff(yy,出生日期,getdate()21if n=0 print 年龄大于21的学生人数有:+cast(n as varchar(5)else print 没有年龄大于21的学生,