T-SQL控制语句

 

语句 功能
BEGIN...END 定义语句块
IF...ELSE

条件选择语句,执行条件成立时,执行IF后的语句;

否则执行ELSE后的语句

CASE 分支处理语句
GOTO 无条件转移
WHILE 循环语句
BREAK 循环跳出语句
CONTINUE 重新启用循环语句
WAITFOR 设置语句执行的延期时间
RETURN 无条件退出语句

 

(1)IF...ELSE

IF 布尔表达式

     语句块1

     语句块2

     。。。

ELSE

     语句块1

     。。。

 

【例】如果存在有大于24的数据打印‘存在’,否则打印‘不存在大于24'’

 

DECLARE @age int,@message varchar(100)
SET @age=24
IF EXISTS(SELECT * FROM dbo.student WHERE sage>@age)
    BEGIN
     PRINT '存在'
    END
ELSE
  BEGIN
   SET @message='不存在大于24'
   PRINT @message
  END
 

 

 

(2)CASE

CASE

    WHEN 布尔表达式 THAN 表达式

    ...

    [ELSE 表达式]

END

 

 

 

SELECT sno,sname,'sdept'=
        CASE sdept
            WHEN 'C1' THEN '第1班'
            WHEN 'C2' THEN '第2班'
            WHEN 'C3' THEN '第3班'
            ELSE '其他班'
         END
 FROM dbo.student
 

 

 

(3)GOTO

 将程序的流程控制无条件转移到用户指定的标号处,而不执行goto语句和标号之间的语句

格式:

 标签:

 ...

 GOTO 标签

 

【例】求1+2+3+...+100的和

 

DECLARE @i int, @sum int
SET @i=1
SET @sum=0
BEG:
  IF(@i<=100)
   BEGIN
     SET @sum=@sum+@i
     SET @i=@i+1
     GOTO BEG
 END
PRINT @sum
   

 

 

 

(4)WHILE ,BREAK,CONTINUE

WHILE 布尔表达式

     SQL语句

 [BREAK]

     SQL语句

 [CONTINUE]

     SQL语句

 

【列】求1+2+3+...+100的和

 

DECLARE @i int, @sum int
SET @i=1
SET @sum=0
WHILE @i>0
  BEGIN 
    IF @i>100
     BEGIN 
       SELECT '1到100的和'=@sum
       BREAK
     END
    ELSE
      SET @sum=@sum+@i
      SET @i=@i+1
  END
   

 

 

(5)WAITFOR 

WAITFOR

 [

   DELAY '时间'|

   TIME   '时间'

DELAY子句指定等待的时间间隔,最多为24小时,

TIME子句指定具体时间点,但是TIME不能指点日期,时间参数为datetime类型,格式为hh:mm:ss

 

【例】设置在10秒后执行查询任务

 

USE dbtest     
BEGIN 
 WAITFOR
   DELAY '00:00:10'
   SELECT * FROM dbo.student
END
 

你可能感兴趣的:(sql)