语句 | 功能 |
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