流控制语句
1.1 If……ELSE条件判断语句
在程序中如果要对给定的条件进行判定,当条件为真或假时执行不同的语句,可以用If……else语句实现
语法格式如下:
IF Logical_expression
expression1
[ELSE
expression2]
用变量示例:
--显示笔试平均成绩、再根据平均成绩显示相应信息 declare @avg float select @avg=AVG(writeExam) from Exam print '-------------成绩信息如下----------------' print '全校平均成绩:'+convert(varchar(20),@avg) if @avg>=70 begin print '全校成绩优秀' --显示前三名的学员信息 select top 3 stuName 姓名,si.StuId 学号,WriteExam 笔试,LabExam 机试 from StuInfo si,Exam ex where si.StuId=ex.StuId order by WriteExam desc--笔试降序排序 end else begin print'全校成绩比较差' select top 3 stuName 姓名,si.StuId 学号,WriteExam 笔试,LabExam 机试 from StuInfo si,Exam ex where si.StuId=ex.StuId order by WriteExam asc--笔试降序排序 end
1.2 BEGIN……END语句块
作用:封装T-SQL语句,使其为完整一块
以Begin为起始位置,end为语句的结尾
允许使用嵌套的 begin……end语句
语法格式如下:
BEGIN
//T-SQL语句
END
begin select * from exam where stuno=@StuNo end
1.3 WHILE循环语句
功能:在满足条件的情况下,重复执行同样的语句
语法格式如下:
WHILE 表达式 BEGIN //T-SQL语句 [BREAK] [CONTLNUE] END
示例如下:
--对全班学员进行提分,保证每个同学的笔试成绩全班通过(用循环) while (1=1)--永远循环 begin declare @count int--保存未通过的人数 select @count=COUNT(*) from Exam where WriteExam<60--统计未通过的人数 if(@count=0) begin break --终止循环 end --进行加分 Update Exam set WriteExam=100 where WriteExam>=98 update Exam set WriteExam=WriteExam+2 where WriteExam<98 end print'------------------加分后学员成绩如下-----------------------' select * from Exam
小提示:在T-SQL中只有while循环,没有for循环和do……while 循环
1.4 CASE
case结构提供比if……else结构更多的选择和判断的机会
case 结构有两种形式:即简单表达式和选择表达式
(1)、简单表达式语法格式如下:
CASE input_expression
WHEN when_expression THEN result_expriession
[WHEN…n… THEN……]
[ELSE else_result_expression]
END
简单表达式例子如下:
select stuno '学号',stuname '姓名',stuAge '年龄',stuSex'性别', case stuSex when '男' then '先生' when '女' then '女士' else '' end '称呼' from StuInfo
(2)、选择表达式
选择表达式语法格式如下:
CASE
WHEN boolean_expression THEN result_expression
[WHEN…n… THEN ……]
[ELSE else_result_expression]
END
例子如下:
--显示学员笔试成绩的等级制 --90分以上,优秀 80-89 良好 70-79中等 60-69 一般 60以下 不及格 select examNo 考号,StuId 学号,WriteExam 笔试成绩,LabExam 机试成绩,等级= case when WriteExam>=90 then '优秀' when WriteExam>=80 then '良好' when WriteExam>=70 then '中等' when WriteExam>=60 then '一般' else'不及格' end from Exam
1.5 RETURN
可以在过程、批、语句块中任何位置使用,作用是无条件的从过程、批或语句块中退出,在return之后的其他语句不会执行
语法格式如下:
RETURN intger_expression
1.6 WAITFOR
waitfor语句可以将它之后的语句在一个指定的间隔之后执行,或在未来的某一个时间执行
语法格式如下:
WAITFOR {DELAY 'time' | TIME 'time'}
1.7 PRINT 和 RAISERROR
(1)PRINT 语句
作用:在屏幕上显示用户信息
格式: PRINT 'string' | @local_variable | @@global_variable
例子:PRINT 'This message was printed on '+RTRIM(CONVERT(varchar(30),GETDATE()))
(2)RAISERROR 语句
作用:将错误信息显示在屏幕上,同时也可以记录在NT日志中
格式:RAISERROR({msg_id | msg_str } { , severity,state} [argument [ , ……n]])[WITH option [, …n]]