SQL Server学习之路(十五)

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介: SQL数据库开发

流程控制是一般开发工具里必备的功能,今天我们来讲讲SQL Server里的流程控制。其中包含IF...ELSE,WHILE

1、IF...ELSE流程控制元素

IF...ELSE元素用于根据条件来控制代码的执行流程。如果条件取值为TRUE,则执行指定的语言和语句块:如果条件取值为FALSE或UNKNOWN,则执行指定的另一语句或语句块。

例如,以下代码检查今天是否是一年的最后一天,如果是,代码打印输出消息,说今天是一年的最后一天,如果不是,则打印输出消息说今天不是一年的最后一天:

IF YEAR(CURRENT_TIMESTAMP)<>YEAR(DATEADD(DAY,1,CURRENT_TIMESTAMP))

   PRINT '今天是一年的最后一天'

ELSE

   PRINT '今天不是一年的最后一天'

注:其中的YEAR是函数,CURRENT_TIMESTAMP是当前时间,具体到豪秒

如果需要控制的流程分支超过两个,则可以使用嵌套的IF...ELSE元素。例如:

a、今天是一年的最后一天。

b、今天是一个月的最后一天,但不是一年的最后一天。

c、今天不是一个月的最后一天。

IF YEAR(CURRENT_TIMESTAMP) <> YEAR(DATEADD(DAY,1,CURRENT_TIMESTAMP))

   PRINT '今天是一年的最后一天。'

ELSE

   IF MONTH(CURRENT_TIMESTAMP) <> MONTH(DATEADD(DAY,1,CURRENT_TIMESTAMP))

       PRINT '今天是一个月的最后一天,但不是一年的最后一天。'

   ELSE

       PRINT '今天不是一个月的最后一天。'

2、WHILE流程控制元素

当在WHILE关键字后指定的条件为TRUE时,WHILE元素可以重复执行一条语句或语句块,当指定的条件取值为FALSE或UNKNOWN时,循环将会终止。

例如,编写一个执行10次的循环:

DECLARE @i AS INT;

SET @i=1

WHILE @i <= 10

BEGIN

   PRINT @i;

   SET @i = @i +1;

END;

代码先声明一个计数器变量@i,并初始化为1,接着只要变量的值小于10就一直循环,在每次循环中,循环体中的代码打印变量@i的值,接着把它的值增加1.结果可以自行执行一下。

如果想在循环内某处退出当前循环,继续执行循环体之后的语句,可以使用BREAK语句。例如,当变量@i等于6时,就退出循环:

DECLARE @i AS INT;

SET @i=1

WHILE @i <= 10

BEGIN

   IF @i = 6 BREAK;

   PRINT @i;

   SET @i = @i +1;

END;

如果想在循环体内某处忽略当前循环的剩余处理,继续进行下一次循环,可以使用CONTINUE命令,例如,在第6次进入循环体时,忽略从IF语句之后直到循环体结束之前出现的其他操作:

DECLARE @i AS INT;

SET @i=1

WHILE @i <= 10

BEGIN

   SET @i = @i +1;

   IF @i = 6 CONTINUE;

   PRINT @i;    

END;

T-SQL中的8个流程控制语句关键字

   在T-SQL中,与流程控制语句相关的关键字有8个:

0.png其中的 GOTO ,WAITFOR不常用,就不讲解了,有兴趣的可以去搜索一下这两个的用法,今天的流程控制就介绍到这里了,希望能帮助到大家~

 

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
相关文章
|
8天前
|
SQL 人工智能 算法
【SQL server】玩转SQL server数据库:第二章 关系数据库
【SQL server】玩转SQL server数据库:第二章 关系数据库
50 10
|
1月前
|
SQL 数据库 数据安全/隐私保护
Sql Server数据库Sa密码如何修改
Sql Server数据库Sa密码如何修改
|
2月前
|
SQL 缓存 关系型数据库
MySQL技能完整学习列表6、查询优化——3、查询缓存——4、SQL优化技巧
MySQL技能完整学习列表6、查询优化——3、查询缓存——4、SQL优化技巧
63 0
|
2月前
|
SQL 算法 数据库
【数据库SQL server】关系数据库标准语言SQL之数据查询
【数据库SQL server】关系数据库标准语言SQL之数据查询
95 0
|
2月前
|
SQL 关系型数据库 MySQL
MySQL技能完整学习列表3、SQL语言基础——1、SQL(Structured Query Language)简介——2、基本SQL语句:SELECT、INSERT、UPDATE、DELETE
MySQL技能完整学习列表3、SQL语言基础——1、SQL(Structured Query Language)简介——2、基本SQL语句:SELECT、INSERT、UPDATE、DELETE
49 0
|
18天前
|
SQL
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
16 0
|
8天前
|
SQL 算法 数据库
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
66 6
|
8天前
|
SQL 存储 数据挖掘
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
服务器数据恢复环境: 一台安装windows server操作系统的服务器。一组由8块硬盘组建的RAID5,划分LUN供这台服务器使用。 在windows服务器内装有SqlServer数据库。存储空间LUN划分了两个逻辑分区。 服务器故障&初检: 由于未知原因,Sql Server数据库文件丢失,丢失数据涉及到3个库,表的数量有3000左右。数据库文件丢失原因还没有查清楚,也不能确定数据存储位置。 数据库文件丢失后服务器仍处于开机状态,所幸没有大量数据写入。 将raid5中所有磁盘编号后取出,经过硬件工程师检测,没有发现明显的硬件故障。以只读方式将所有磁盘进行扇区级的全盘镜像,镜像完成后将所
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
|
12天前
|
SQL 安全 Java
SQL server 2017安装教程
SQL server 2017安装教程
14 1
|
25天前
|
SQL 存储 Python
Microsoft SQL Server 编写汉字转拼音函数
Microsoft SQL Server 编写汉字转拼音函数