T-SQL 控制流语句

Go 关键字可以对批量处理的SQLServer 进行分批次处理

 DECLARE @i int;
  SET @i = 1;
  GO        --分批了
  PRINT @i  --@i在这个批里未定义

  输出:

消息 137,级别 15,状态 2,第 1 行
必须声明标量变量 "@i"

控制流语句不能跨批执行
 DECLARE @i int;
  SET @i = 1;
  IF(@i = 1)
      PRINT('1');
  GO        --分批了
  ELSE
      PRINT('不知道'); --ELSE找不到IF了,控制流语句不跨批,因此报错。

 输出结果如下:

1
消息 156,级别 15,状态 1,第 1 行
关键字 'ELSE' 附近有语法错误。


控制流语句也成为流程控制语句,和高级语言中的控制语句类似,引入控制语句,让T-SQL中的语句由顺序执行,变为按照控制执行。

1、程序块执行语句 Begion ....end
程序块语句 用于多条T-SQL语句封装起来构成一个程序块。SQLServer在处理时,将整个程序块视为一条T-SQL语句执行。

Begin 
    <T-SQL 程序命令行或程序块>
End

   经常与 While或if....else组合起来使用,可以互相嵌套。

  2 判断语句IF.....ELSE

     判断语句用于根据条件判断,是否执行某块语句

  

  if 逻辑表达式
        程序块1
  else 逻辑表达式
       程序块2

3 while循环语句

    while语句用于执行循环,可以根据循环条件重复执行语句块。通常使用break和continue关键字在循环内部进行控制。

        

while <条件表达式>

   〈Sql语句1〉

      break

    〈Sql语句2〉

     continue

      〈Sql语句3〉

 

     break 控制跳出循环,并结束循环体

    continue 让语句跳过〈Sql语句3〉 开始下次判断循环。

 

4 分支判断语句CASE

  CASE 语句用于执行多条件的分支判断。

  语法格式:

  CASE input_expression

   WHEN when_expression

    THEN  result_expression

   END

 

select Id,
    (case 
            when chinese >= 80 then '优秀' 
            when chinese >= 60 then '及格' 
            else  '不及格' 
    end) as 语文,
    (case 
            when math >= 80 then '优秀' 
            when math >= 60 then '及格' 
            else '不及格' 
    end) as 数学,
        (case 
            when english >= 80 then '优秀' 
            when english >= 60 then '及格' 
            else '不及格' 
    end) as 英语
from fenshu

 

   

 5、无条件退出语句RETURN

    RETURN语句用于使程序从一个查询、存储过程或批量处理中无条件返回,其后面的语句不再执行。如果在存储过程中使用return语句,那么此语句可以指定返回给调用应用程序、批处理或过程的整数;如果没有为return指定整数值,那么该存储过程将返回0。

    存储过程返回值:

返回值含义
0存储过程执行成功
-1没有找到数据库对象
-2数据类型错误
-3进程死锁错误
-4进程死锁错误
-5语法错误
-6其他用户错误
-7资源错误
-8非致命的内部错误
-9达到系统配置参数极限
-10内部一致性致命错误
-11内部一致性致命错误
-12表或索引崩溃
-13数据库崩溃
-14硬件错误



6、无条件跳转语句GOTO

    GOTO语句可以使程序无条件跳转到指定的程序执行点,增加了程序设计的灵活性。但破坏了程序的结构化,使程序结构变得复杂而且难以测试。

    语法:

    GOTO 语句标识符

    使用说明:

     语句标识符可以是数字或者字母的组合,但必须以":"结束。而在GOTO语句后的标识符不必带":"。

    注意事项:

     GOTO语句和跳转标签可以在存储过程、批处理或语句块中的任何地方使用,但不能超出批处理的范围。

  

7、延期执行语句WAITFOR

   延期执行有两种方式,一种是指定时间点,一种是制定时间间隔

 Waitfor{

    time ‘时间点’

}

Begin

 SQL语句

end

 

WaitFor{
  delay ‘时间间隔’
}

Begin 
  SQL语句
End

 

转载于:https://www.cnblogs.com/liwenchaoCode/p/5822261.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值