流控制语句

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]]

 

posted @ 2018-01-14 20:29  小汐儿  阅读(126)  评论(0编辑  收藏  举报