Sqlserver基于流程控制

本文深入探讨了SQL Server中的流程控制语句,包括BeginEnd、While、Continue、Break、Return和Waitfor的使用场景与注意事项。特别强调了批处理的概念、局部变量的作用范围及Waitfor语句的时间控制功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

流程控制语句只能在单个批处理段,用户自定义函数和存储过程中使用
不能夸多个批处理或者用户自定义函数或者存储过程

批处理:一个或者多个语句组成的一个批处理,是因为所有语句一次性地被提交到一个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

 

转载于:https://www.cnblogs.com/niuzaihenmang/p/5706879.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值