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]