Sqlserver基于流程控制
流程控制语句只能在单个批处理段,用户自定义函数和存储过程中使用
不能夸多个批处理或者用户自定义函数或者存储过程
批处理:一个或者多个语句组成的一个批处理,是因为所有语句一次性地被提交到一个sql实例,
如果想让多个语句多次提交到sql实例,则需要go关键字,可以看做是一个批处理结束的标识符,当遇到go,会把go前面的语句作为一个批处理直接传递到sql实例,所以不在一个批处理内局部变量不可见,也不可对夸批处理的语句使用流程控制语句sqlserver 有8个流程控制语句关键字:
Begin end ,break,goto,continue,if else ,while,return,waitfor
begin end:用于将多个语句分成逻辑上的一部分
while:用于循环,还经常被用于游标中
continue:用于结束本次循环,直接开始下一次循环
break:用于结束本次循环,直接开始下一次循环
注意:当while循环嵌套时,continue和break只会作用于它们所处的while循环之内,不会对外部while循环产生作用
return:在第一个批处理内return之后的语句不会执行,但只会退出第一个批处理
第二个批处理照常执行
在存储过程中,return语句后面可以返回数字用于返回执行状态或者错误代码
waitfor:关键字允许指定语句在特定时间或是推迟特定时间执行
推迟等待的语法是: waitfor delay ‘需要等待的执行时间’
在特定时间执行的语法是: waitfor time ‘需要执行程序的精确时间’
WAITFOR DELAY '0:00:03' BEGIN PRINT 1 PRINT 2 END SELECT GETDATE(); WAITFOR TIME '15:56:24.233' BEGIN PRINT 1 PRINT 2 END
--比如 10小时后打印 当前时间
DECLARE @startTime DATETIME
WAITFOR TIME @startTime
BEGIN
PRINT GETDATE();
END