不正狼 发表于 2018-10-20 06:15:31

T-SQL 控制流语句

  控制流语句
  批处理:
  一个批处理段是由一个或者多个语句组成的一个批处理,之所以叫批处理是因为所有语句一次性被提交到一个SQL实例。

[*]  批处理是分批提交到SQL Server示例,因此在不同的批处理里局部变量不可访问。
[*]  在不同批处理中,流程控制语句不能跨批处理。
[*]  如果想让多个语句分多次提交到SQL实例,则需要使用GO关键字。GO关键字本身并不是一个SQL语句,GO关键字可以看作是一个批处理结束的标识符,当遇到GO关键字时,当前GO之前的语句会作为一个批处理直接传到SQL实例执行。  
  不同的批处理局部变量不可访问,例如:
  DECLARE@iint;  SET@i=1;  GO--分批了PRINT@i--@i在这个批里未定义
  输出:
  消息 137,级别 15,状态 2,第 1 行必须声明标量变量 "@i"。
  控制流语句不能跨批处理,例如:
  DECLARE@iint;  SET@i=1;  IF(@i=1)      PRINT('1');  GO--分批了ELSEPRINT('不知道');  --ELSE找不到IF了,控制流语句不跨批,因此报错。
  输出结果如下:
  1消息 156,级别 15,状态 1,第 1 行关键字 'ELSE' 附近有语法错误。
  控制流语句也称为流程控制语句,是和高级编程语言中的类似功能一致的,引入控制流语句将使T-SQL代码有顺序执行转变为按控制执行。
  1、程序块语句BEGIN...END
  程序块语句用于将多条T-SQL语句封装起来构成一个程序块。SQLServer在处理时,将整个程序块视为一条T-SQL语句执行。
  begin  end
  经常与while或if...else组合起来使用,可以相互嵌套。
  2、判断语句IF...ELSE
  if...else语句用于条件测试,系统将根据条件满足与否来决定如何执行语句,else子句是可选的。
  语法:
  if 逻辑表达式       语句块1 else   语句块2 语句块3
  if的形式通常包括if exists(用于判断是否存在)和if not(是否条件不满足)
  综合示例:
  DECLARE@iintSET@i=10;IF(@i
页: [1]
查看完整版本: T-SQL 控制流语句