码迷,mamicode.com
首页 > 其他好文 > 详细

流控制语句

时间:2018-01-14 21:23:51      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:desc   date   UI   表达式   错误   argument   raise   for循环   des   

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

 

流控制语句

标签:desc   date   UI   表达式   错误   argument   raise   for循环   des   

原文地址:https://www.cnblogs.com/1219zy/p/8284222.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!