iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >SQLSERVER中的流程控制语句
  • 642
分享到

SQLSERVER中的流程控制语句

2024-04-02 19:04:59 642人浏览 薄情痞子
摘要

目录批处理1、BEGIN...AND语句2、IF...ELSE语句3、 CASE语句4、 WHILE语句5、无条件退出语句RETURN6、无条件跳转语句GoTO7、WaiTFOR语句

T-sql中用来编写流程控制模块的语句有:BEGIN...AND语句、IF...ELSE语句、CASE语句、WHILE语句、GOTO语句、BREAK语句、WAITFOR语句和RETURN语句。

批处理

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

  • 批处理是分批提交到SQL Server示例,因此在不同的批处理里局部变量不可访问。
  • 在不同批处理中,流程控制语句不能跨批处理。
  • 如果想让多个语句分多次提交到SQL实例,则需要使用GO关键字。GO关键字本身并不是一个SQL语句,GO关键字可以看作是一个批处理结束的标识符,当遇到GO关键字时,当前GO之前的语句会作为一个批处理直接传到SQL实例执行。
DECLARE @i int;
  SET @i = 1;
  GO        --分批了
  PRINT @i  --@i在这个批里未定义

1、BEGIN...AND语句

语句块是多条Transact-SQL语句组成的代码段,从而可以执行一组Transact-SQL语句。经常与while或if...else组合起来使用,可以相互嵌套。

示例:

DECLARE @count INT
SELECT @count = 0
WHILE @count < 10
BEGIN
    PRINT 'count = ' + CONVERT(VARCHAR(10), @count)
    SELECT @count = @count + 1
END

PRINT 'loop finished, count = ' + CONVERT(VARCHAR(10), @count)

2、IF...ELSE语句

IF...ELSE语句用于在执行一组代码之前进行条件判断,根据判断的结果执行不同的代码。IF...ELSE语句语句对布尔表达式进行判断,如果布尔表达式返回为TRUE,则执行IF关键字后面的语句块;如果布尔表达式返回FALSE,则执行 ELSE关键字后面的语句块。

语法:

IF Boolean_expression 
     { sql_statement | statement_block } 
[ ELSE 
     { sql_statement | statement_block } ]

示例:

DECLARE @score INT
SET @score = 100
IF @score >= 60
    PRINT '及格'
ELSE
    PRINT '不及格'

3、 CASE语句

CASE语句是多条件分支语句,相比IF...ELSE语句,CASE语句进行分支流程控制可以使代码更加清晰,易于理解。CASE语句根据表达式逻辑值的真假来决定执行的代码流程。

语法:

CASE input_expression 
     WHEN when_expression THEN result_expression [ ...n ] 
     [ ELSE else_result_expression ] 
END

CASE
     WHEN Boolean_expression THEN result_expression [ ...n ] 
     [ ELSE else_result_expression ] 
END

示例:

DECLARE @score INT
SET @score = 100

SELECT CASE @score 
            WHEN 100 THEN '满分'
            WHEN 60 THEN '及格'
        END
        AS '成绩'

或者

DECLARE @score INT
SET @score = 100

SELECT CASE 
            WHEN @score >= 90 THEN '优秀'
            WHEN @score >= 80 THEN '良好'
            WHEN @score >= 70 THEN '中等'
            WHEN @score >= 60 THEN '及格'
            ELSE '不及格'
        END
        AS '成绩'

4、 WHILE语句

WHILE语句根据条件重复执行一条或多条T-SQL代码,只要条件表达式为真,就循环执行语句。可以使用 BREAK 和 CONTINUE 关键字在循环内部控制 WHILE 循环中语句的执行。

语法:

WHILE Boolean_expression 
     { sql_statement | statement_block | BREAK | CONTINUE }

参数:

  • Boolean_expression:返回 TRUE 或 FALSE 的表达式。 如果布尔表达式中含有 SELECT 语句,则必须用括号将 SELECT 语句括起来。
  • {sql_statement | statement_block}:Transact-SQL 语句或用语句块定义的语句分组。 若要定义语句块,请使用控制流关键字 BEGIN 和 END。
  • BREAK:导致从最内层的 WHILE 循环中退出。 将执行出现在 END 关键字(循环结束的标记)后面的任何语句。
  • CONTINUE:使 WHILE 循环重新开始执行,忽略 CONTINUE 关键字后面的任何语句。
DECLARE @i int;
SET @i = 0;
WHILE(@i < 10)
BEGIN
    SET @i = @i + 1;
    IF(@i % 2 = 0)
    BEGIN
        PRINT('跳过2的倍数' + CAST(@i AS varchar));
        CONTINUE;
    END
    ELSE IF (@i = 7)
    BEGIN
        PRINT('到' + CAST(@i AS varchar) + '就跳出循环');
        BREAK;
    END
    PRINT @i;
END

5、无条件退出语句RETURN

RETURN语句用于使程序从一个查询、存储过程或批量处理中无条件返回,其后面的语句不再执行。如果在存储过程中使用return语句,那么此语句可以指定返回给调用应用程序、批处理或过程的负整数;如果没有为return指定整数值,那么该存储过程将返回0。

BEGIN
    PRINT(1);
    PRINT(2);
    RETURN;
    PRINT(3);    --在RETURN之后的代码不会被执行,因为会跳过当前批处理
END
GO
BEGIN
    PRINT(4);
END

6、无条件跳转语句GOTO

GOTO语句可以使程序无条件跳转到指定的程序执行点,增加了程序设计的灵活性。但破坏了程序的结构化,使程序结构变得复杂而且难以测试

使用说明:语句标识符可以是数字或者字母的组合,但必须以":"结束。而在GOTO语句后的标识符不必带":"。

注意事项:GOTO语句和跳转标签可以在存储过程、批处理或语句块中的任何地方使用,但不能超出批处理的范围。

DECLARE @i int;

SET @i = 1;
SET @i = 2;
SET @i = 3;
SET @i = 4;
GOTO ME;
SET @i = 5;  --这行被跳过了
SET @i = 6;  --这行被跳过了
SET @i = 7;  --这行被跳过了

ME:PRINT('跳到我了?');
PRINT @i

输出结果如下:

跳到我了?
4

7、WAITFOR语句

waitfor语句用于挂起语句的执行,直到指定的时间点或者指定的时间间隔。

语法:

WAITFOR 
{
    DELAY 'time_to_pass' 
  | TIME 'time_to_execute' 
  | [ ( receive_statement ) | ( get_conversation_group_statement ) ] 
    [ , TIMEOUT timeout ]
}

在waitfor语句中不能包含打开游标,定义视图这样的操作。在包含事务的语句中不要使用waitfor语句,因为waitfor语句在时间点或时间间隔执行期间将一直拥有对象的,当事务中包含waitfor语句,事务的其他语句又需要访问被锁住的数据对象事就容易发生死锁现象。

7.1 DELAY参数

DELAY参数指定了等待的时间段。不能指定天数,只能指定小时数、分钟数和秒数。允许延迟的最长时间为24小时。

WAITFOR DELAY '01:00'

将运行WAITFOR语句前的任何代码,然后到达WAITFOR语句,停止1小时,之后继续执行下一条语句中的代码。

7.2 TIME参数

TIME参数指定到达指定时间的等待时间。

WAITFOR TIME '01:00'

将运行WAITFOR语句前的任何代码,然后到达WAITFOR语句,直到凌晨1点停止执行,之后执行WAITFOR语句后的下一条语句。

到此这篇关于SQL SERVER流程控制语句的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: SQLSERVER中的流程控制语句

本文链接: https://www.lsjlt.com/news/149510.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SQLSERVER中的流程控制语句
    目录批处理1、BEGIN...AND语句2、IF...ELSE语句3、 CASE语句4、 WHILE语句5、无条件退出语句RETURN6、无条件跳转语句GOTO7、WAITFOR语句...
    99+
    2022-11-13
  • SqlServer系列笔记——流程控制语句
    --if else if 1>0print '大'--begin end结构begin end用途 设定一个程序块,进行批处理if 1>0beginprint '大'end--case...
    99+
    2022-10-18
  • 流程控制语句
    JavaScript 运算符与流程控制语句 运算符 1、赋值运算符:=、+=、-=、*=、/=、%= 2、算术运算符:+、-、*、/、%、++、-- 3、字符串运算符:+、+= 4、比较运算符:==、!=、= 5、逻辑运算符:&&、||、...
    99+
    2023-06-03
  • Python3 流程控制语句
    Python3 流程控制语句 python3 的流程控制语句包括: if 条件语句 while循环语句 for 循环语句 range函数 break continue pass 一、if语句 if语句是python中最常用的条件控制语...
    99+
    2023-01-31
    语句 流程
  • Python流程控制语句
    注意: 在 Python 中,非零值表示 True;None 和 0 表示 False。if 语句if…else 语句if…elif…else 语句嵌套 if 语句可以将一个 if … elif … else 语句加入至另一个 if … e...
    99+
    2023-01-31
    语句 流程 Python
  • Python中的程序流程控制语句
    目录一、分支语句二、循环语句1.可迭代对象2.while循环3.for循环4.九九乘法表三.循环控制语句1.break2.continue3.goto4.else四、循环相关的内置函...
    99+
    2022-11-13
  • Go语言流程控制语句
    1.条件语句 几个注意点和C#不一样的。 if a < 5 { return 0 } else { return 1 } ① 条件语句不需要使用括号...
    99+
    2022-11-13
  • PL/SQL流程控制语句
    介绍PL/SQL的流程控制语句, 包括如下三类: l 控制语句: IF 语句l 循环语句: LOOP语句, EXIT语句l 顺序语句: GOTO语句, NULL语句1 条件语句IF <布尔表达式&g...
    99+
    2022-10-18
  • 004 python 流程控制语句
    流程控制语句 1.if判断 语法 a = 10,b = 20# 1if a == 10:  print('a等于10')# 2if a > b:  print('a大于b')else:  print('a小于b')# 3if ...
    99+
    2023-01-31
    语句 流程 python
  • php流程控制语句的作用
    本文操作环境:windows7系统、PHP7.4版、DELL G3电脑php流程控制语句的作用php流程控制语句的作用就是能基于不同条件执行不同的动作。PHP三大流程控制语句有三种,分别是顺序语句,选择语句,循环语句。在编程中起到了很大的作...
    99+
    2019-09-21
    php
  • Python流程控制语句详解
    目录1.if判断1.1 if语句1.2 else语句1.3 elif语句2.循环2.1 while循环2.2 for循环2.3 break和continue语句3.其他1.if判断 ...
    99+
    2022-11-11
  • JAVA中的流程控制语句有哪些
    这期内容当中小编将会给大家带来有关JAVA中的流程控制语句有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。第一节 JAVA条件语句之if语句单独的if语句,语法:if(条件){条件成立时执行的代码};...
    99+
    2023-05-31
    java 流程控制语句 ava
  • mysql中有哪些流程控制语句
    mysql中的流程控制语句有:1.IF语句,根据不同条件执行不同操作;2.CASE语句,多分支语句结构;3.WHILE循环语句,先判断后执行;4.LOOP循环语句,没有内置的循环条件;5.REPEAT循环语句,先执行后判断;mysql中的流...
    99+
    2022-10-03
  • java中有哪些流程控制语句
    java中有哪些流程控制语句?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。程序的结构分类:顺序结构:按照写代码的顺序 一次执行 选择结构:根据条件的不同有选择的执行不同的代码循...
    99+
    2023-05-31
    java 中有 ava
  • JavaScript中有哪些循环语句和流程控制语句
    这篇文章将为大家详细讲解有关JavaScript中有哪些循环语句和流程控制语句,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。循环语句众所周知,常用的循环语句...
    99+
    2022-10-19
  • python的流程控制语句有哪些
    python的流程控制语句有:1、if语句,根据条件执行不同的代码块;2、for循环,用于遍历一个序列或其他可迭代对象;3、while循环,当给定条件为真时,重复执行一段代码;4、break语句,用于终止当前循环,跳出整个循环;5、cont...
    99+
    2023-12-11
    python
  • Java的流程控制语句有哪些
    本篇内容介绍了“Java的流程控制语句有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!01、if-else 相关1)if 语句if 语句...
    99+
    2023-06-16
  • Python中的程序流程控制语句怎么用
    这篇文章主要介绍了Python中的程序流程控制语句怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python中的程序流程控制语句怎么用文章都会有所收获,下面我们一起来看看吧。一、分支语句在Python中分...
    99+
    2023-06-29
  • mysql流程控制语句是什么
    这篇文章将为大家详细讲解有关mysql流程控制语句是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。mysql中的流程控制语句包括有:IF语句、CASE语句、LOOP语...
    99+
    2022-10-18
  • JavaScript流程控制语句怎么用
    这篇文章主要介绍“JavaScript流程控制语句怎么用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JavaScript流程控制语句怎么用”文章能帮助大家解决问题...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作