发布时间:2025-11-05 13:21:33 来源:创站工坊 作者:人工智能
一般是指用来控制程序执行和流程分至点额命令,一般指的中制明是逻辑计算部分的控制。
常见的程控流程控制有以下8种:
BEGIN ... END
WAITFOR
GOTO
WHILE
IF ... ELSE
BREAK
RETURN
CONTINUE
下面给大家具体介绍每种流程控制的用法。
BEGIN ... END语句用于将多个T-SQL语句合为一个逻辑块。聊聊当流程控制语句必须执行一个包含两条或两条以上的中制明T-SQL语句的语句块时,使用BEGIN ... END语句。程控
语法BEGINsql_statement...END示例我们在数据库中打印出我们公众号的聊聊名称"SQL数据库开发"
复制DECLARE @A VARCHAR(20)SET @A=SQL数据库开发BEGINSELECT@A
END1.2.3.4.5.结果如下:

这里的SELECT @A就是一条被执行的命令语句。
IF [...ELSE]表示可以只使用IF,中制明也可以IF和ELSE一起使用,程控表示条件判断。聊聊当满足某个条件使,中制明就执行IF 下面的程控语句,否则执行ELSE下面的聊聊语句
IF语法IF <条件表达式>{命令行 | 程序块}IF示例如果某字符串的长度大于5,就打印该字符串
复制DECLARE @A VARCHAR(20)SET @A=SQL数据库开发IF LEN(@A)>5SELECT @A1.2.3.4.结果:

这里结果与上面的中制明BEGIN...END一样,但是程控如果我们将条件改成大于8,结果可能就不是服务器租用这样的了,小伙伴们可以试一下。
IF...ELSE语法IF <条件表达式>{命令行 | 程序块}ELSE {命令行 | 程序块}IF...ELSE示例如果字符串的长度大于10,就打印该字符串,否则打印"字符串长度太短"
复制DECLARE @A VARCHAR(20)SET @A=SQL数据库开发IF LEN(@A)>10SELECT@A
ELSE
SELECT 字符串长度太短1.2.3.4.5.6.结果:

很明显字符串"SQL数据库开发"长度不大于10,所以返回ELSE里的结果了。
WHILE是循环控制,当满足WHILE后面的条件后,就可以循环执行WHILE下面的语句。通常与CONTINUE和BREAK一起使用,Break命令让程序完全跳出循环语句,结束WHILE命令,CONTINUE是让命令继续返回执行
语法WHILE <条件表达式>{命令行 | 程序块}CONTINUE{命令行 | 程序块}BREAK{命令行 | 程序块}示例有1到10这样一组数字,从1按顺序开始,遇到偶数就跳过,遇到奇数就打印出来,当遇到9就结束打印。
复制DECLARE @i int;SET @i = 0;WHILE(@i < 10)BEGIN SET @i = @i + 1; IF(@i % 2 = 0) BEGIN PRINT (跳过偶数数 + CAST(@i AS varchar)); CONTINUE;END
ELSE IF (@i = 9) BEGIN PRINT (到 + CAST(@i AS varchar) + 就结束打印); BREAK;END
PRINT @i;END1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.结果如下:

我们只正常打印出来了1-3-5-7其他的不是跳过就是到9就结束了。
RETURN语句用于使程序从一个查询、存储过程或批量处理中无条件返回,其后面的语句不再执行。如果在存储过程中使用return语句,WordPress模板那么此语句可以指定返回给调用应用程序、批处理或过程的整数;如果没有为RETURN指定整数值,那么该存储过程将返回0。
语法RETURN [整数表达式]
示例 复制BEGIN PRINT(1); PRINT(2); RETURN ; PRINT(3); --在RETURN之后的代码不会被执行,因为会跳过当前批处理 PRINT(4);END
GO
BEGIN PRINT(5);END1.2.3.4.5.6.7.8.9.10.11.结果如下:

RETURN后面的3-4都没打印,说明在当前批处理的RETURN后都没执行,而新起的BEGIN...END不受上面的RETURN影响,所以打印了5
注意:
语句标识符可以是数字或者字母的组合,但必须以":"结束。而在GOTO语句后的标识符不必带":"。
GOTO语句和跳转标签可以在存储过程、批处理或语句块中的任何地方使用,但不能超出批处理的范围。IT技术网
语法GOTO 标识符
示例复制DECLARE @i INT;
SET @i = 1;
PRINT @i;
SET @i = 2;
PRINT @i;
GOTO ME;
SET @i = 3; --这行被跳过了
PRINT @i;
ME:PRINT(跳到我了?);
PRINT @i1.2.3.4.5.6.7.8.9.10.11.结果如下:

从上面可以看出,当跳到ME的时候,GOTO之前的数有打印,之后的数就跳过了
用于挂起语句的执行,直到指定的时间点或者指定的时间间隔。
注意:
WAITFOR常用语某个特定的时间点或时间间隔自动执行某些任务。在WAITFOR语句中不能包含打开游标,定义视图这样的操作。在包含事务的语句中不要使用WAITFOR语句,因为WAITFOR语句在时间点或时间间隔执行期间将一直拥有对象的锁,当事务中包含WAITFOR语句,事务的其他语句又需要访问被锁住的数据对象事就容易发生死锁现象。
指定时间点的语法WAITFOR TIME <具体时间>
示例在08:10:00执行打印字符串"SQL数据库开发"
复制WAITFOR TIME 08:10:00PRINT SQL数据库开发1.2.如果你执行这句话,那如果在今天这个点之前,那么等到这个时候它就会打印字符串,如果在今天这个点之后,那你需要等到第二天的这个时间点才会打印。在未执行之前查询窗口是一直"正在执行查询..."状态

INTERVAR为时间间隔,指定执行WAITFOR 语句之前需要等待的时间,最多为24小时。
示例复制WAITFOR DELAY 00:00:03
PRINT SQL数据库开发1.2.在等到3秒钟后,会打印出字符串

流程控制是SQL开发中经常需要使用到的,特别是条件判断IF...ELSE,循环执行WHILE是经常使用的,对于想在SQL开发中有所提高的同学,务必要掌握这几个流程控制的用法。
随便看看