`

SQL Server流程控制语句

 
阅读更多
流程控制语句:
  BEGIN…END语句
  IF…ELSE语句
  CASE函数
  WHILE循环
  GOTO语句
  WAITFOR语句
  RETURN语句
-----------------------------------------------------------------------------
BEGIN…END语句用于将多个Transact-SQL语句定义成一个语句块。语句块可以在程序中视为一个单元处理。BEGIN…END语句的语法如下:

BEGIN

{ sql语句|语句块}

END

其中,sql语句为一条Transact-SQL语句;语句块为用BEGINEND定义的语句块。可以看出,在一个语句块中可以包含另一个语句块。
-----------------------------------------------------------------------------
IF…ELSE语句的语法如下:

IF 布尔表达式

{ sql语句1 |语句块1 }

[ ELSE

{ sql语句2 |语句块2 } ]

例:
设有一个“学生信息”数据库,数据库中有一个“学生基本信息”表,该表包含学号、姓名、出生日期等列。要给本月出生的学生举办庆祝生日会,每月1日选出要过生日的学生名单。
代码如下:

USE 学生信息--打开“学生信息”数据库

DECLARE @Today int --定义局部变量@Todayint类型

SET @Today=DAY(GETDATE()) --给变量@Today设置为当前日期

IF (@Today=1) --如果@Today1,则从数据库中查询信息

BEGIN

SELECT 学号,姓名AS本月寿星,出生日期

FROM 学生基本信息

WHERE MONTH(出生日期)= MONTH(GETDATE())

END

-----------------------------------------------------------------------------
简单CASE函数
简单CASE函数的语法形式如下:

CASE 输入表达式

WHEN when_表达式THEN结果表达式

[ ...n ]

[ELSE 结果表达式]

END

例:
设有一个“学生信息”数据库,数据库中有一个“学生基本信息”表,该表包含学号、姓名、性别等列。性别列的类型为bit,等于0表示女,等于1表示男。使用下面的SELECT语句可以查询所有学生的姓名和性别。

USE 学生信息--打开“学生信息”数据库

SELECT姓名, --显示姓名

CASE 性别

WHEN 0 THEN ''

WHEN 1 THEN ''

ELSE '' --如果不为01,则返回空字符串

END,

FROM 学生基本信息 --从学生基本信息表中查询

CASE搜索函数的语法形式如下:

CASE

WHEN 布尔表达式 THEN 结果表达式

[ ...n ]

[ELSE 结果表达式 ]

END

例:

根据当前系统时间输出当前季度。代码如下:

SELECT

CASE

WHEN month(getdate())>=1 AND month(getdate())<4 THEN '一季度'

WHEN month(getdate())>3 AND month(getdate())<7 THEN '二季度'

WHEN month(getdate())>=6 AND month(getdate())<10 THEN '三季度'

ELSE '四季度'

END --titles表查询


-----------------------------------------------------------------------------
可以使用WHILE循环来控制如何重复执行SQL语句或语句块,其语法如下:

WHILE 布尔表达式

{ sql语句|语句块 }

例:

1100之间的奇数和。
代码如下:

DECLARE @ismallint,@sumsmallint

SET @i=1

SET @sum=0

WHILE @i<=100

BEGIN

SET @sum=@sum+@i

SET @i=@i+2

END

PRINT '1 100之间的奇数和为'+str(@sum)

为了说明CONTINUEBREAK语句的作用,可以将以上代码改写为:

DECLARE @ismallint,@sumsmallint

SET @i=0

SET @sum=0

WHILE @i>=0

BEGIN

SET @i=@i+1

IF @i<=100

IF (@i % 2)=0

CONTINUE

ELSE

SET @sum=@sum+@i

ELSE

BEGIN

PRINT '1 100之间的奇数和为'+str(@sum)

BREAK

END

END

-----------------------------------------------------------------------------
GOTO语句用于改变程序的执行流程,其语法如下:

GOTO 标号

……

标号:

-----------------------------------------------------------------------------

WAITFOR语句用于暂时停止SQL语句、语句块或者存储过程等的执行,直到所设定的时间间隔已过或者所设定的时间已到才继续执行。WAITFOR语句的语法形式为:

WAITFOR { DELAY '时间' | TIME '时间' }

如果使用DELAY关键字,则其后的时间应为时间间隔,该时间间隔最长可达24小时;如果使用TIME关键字,则其后的时间用于指示要等待到的时间点,格式为:hh: mm: ss
例:
在一分钟以后打印“HELLO”,代码如下:

BEGIN

WAITFOR DELAY '00:01'

PRINT 'HELLO'

END

在晚上10:20时打印“HELLO”

BEGIN

WAITFOR TIME '22: 20'

PRINT 'HELLO'

END

-----------------------------------------------------------------------------

RETURN语句用于无条件地终止一个查询、存储过程或者批处理,当执行RETURN语句时,位于RETURN语句之后的程序将不会被执行。RETURN语句的语法形式为:

RETURN [ 整数表达式 ]

在存储过程中可以在RETURN后面使用一个具有整数值的表达式,用于向调用过程或应用程序返回整型值。关于存储过程的使用将在第7章介绍。

分享到:
评论

相关推荐

    Sqlserver中常用的流程控制语句

    学习SQL流程控制语句的好东东。Sqlserver中常用的流程控制语句

    非常好用的SQL Server 抓取SQL语句工具HOOK

    非常好用的SQL Server 抓取SQL语句工具HOOK 非常好用的SQL Server 抓取SQL语句工具HOOK 非常好用的SQL Server 抓取SQL语句工具HOOK 非常好用的SQL Server 抓取SQL语句工具HOOK

    sqlserver自动生成sql语句工具sqlserver转oracle

    首先,标题中的"sqlserver自动生成sql语句工具"指的是可以分析SQL Server数据库结构和数据,自动生成对应的SQL创建语句的软件。这种工具通常能帮助数据库管理员快速获取数据库的定义,便于备份、迁移或在其他环境中...

    Sql Server ExpressProfiler 监视Sql语句

    通过跟踪SQL语句的执行流程,可以发现导致问题的根源。 5. **数据导出与回放**:Profiler可以将跟踪结果保存为TRC文件,方便日后分析或在其他环境中回放,重现问题场景。 6. **性能调优**:通过分析SQL语句的执行...

    Excel根据表格,批量生成sqlserver语句 ,生成建表语句,自行到数据库中执行

    标题提到的“Excel根据表格,批量生成sqlserver语句,生成建表语句,自行到数据库中执行”,就是一种利用Excel宏自动化生成SQL Server建表语句的方法。这种方法适用于已有数据结构清晰的Excel表格,通过特定的规则...

    SQLServer导出为Insert语句

    本话题聚焦于如何将SQL Server中的用户表数据导出为Insert语句,这通常用于数据迁移、备份或者测试环境的数据填充。下面我们将详细讨论这个过程以及涉及的相关技术。 1. **SQL Server数据库**:SQL Server是由微软...

    SQLServer实用SQL语句大全

    本资料"SQLServer实用SQL语句大全"是一份全面的手册,旨在帮助用户理解和掌握SQL Server中的SQL语法和函数。 一、SQL基本操作 1. 数据查询:SQL的SELECT语句是用于从数据库中检索数据的核心命令。通过指定列名、...

    SQLserver常用语句大全

    本资源摘要信息涵盖了 SQL Server 中常用的语句大全,包括数据操作、数据定义、数据控制、事务控制、程序化 SQL 等方面的知识点。 一、数据操作 * SELECT 语句:从数据库表中检索数据行和列 * INSERT 语句:向...

    从SQLServer数据库导出SQL语句

    5. **文件"从SQLServer数据库导出SQL语句.exe"**: 这个文件名暗示可能是一个实用程序,专门用于从SQL Server数据库导出SQL语句。如果这是你正在寻找的工具,使用前务必确认其来源安全,避免引入恶意软件。 总的来...

    SqlServer删除所有表数据语句

    Sql Server 是一种关系型数据库管理系统,广泛应用于企业级应用程序中。在实际开发和测试中,我们常常需要删除数据库中的所有表数据,而保持表结构不变。下面我们将介绍如何使用一条 Sql Server 语句删除当前数据库...

    SQLServer数据库表中数据导出成SQL语句工具

    针对这个需求,存在一种名为“SQLServer数据库表中数据导出成SQL语句工具”的实用程序,它能够帮助我们高效地完成这项任务。这个工具通常以MHT(Multi-Part/Related)格式提供,这是一种单一文件Web页面存储格式,...

    SQL Server中存储过程比直接运行SQL语句慢的原因

    SQL Server 中存储过程比直接运行 SQL 语句慢的原因 在 SQL Server 中,存储过程比直接运行 SQL 语句慢的原因是 Parameter sniffing 问题。Parameter sniffing 是指 SQL Server 在执行存储过程时,使用参数的统计...

    SQL SERVER 数据自动生成SQL语句

    SQL Server 数据自动生成SQL语句是一项实用的功能,它极大地简化了数据迁移或备份的过程。这个功能使得用户能够快速地根据数据库中的表结构和已有数据,生成相应的SQL插入语句,以便将这些数据移植到其他数据库系统...

    从SQLServer数据库导出SQL语句的程序

    4. 生成SQL脚本:点击“导出”或类似按钮,程序会自动生成一个包含所有选定对象的SQL脚本文件,这个文件就是`从SQLServer数据库导出SQL语句.exe`。 5. 使用和保存脚本:生成的SQL脚本可以保存到本地,供后续在其他...

    mysql转化成sql server sql转化成mysql工具

    2. 转换规则应用:根据SQL Server的语法特性,工具会将MySQL的SQL语句转化为相应的SQL Server语法。 3. 数据导出:将MySQL中的数据导出为SQL脚本,或者直接导入到SQL Server中。 4. 验证与调整:迁移后,需要验证...

    sqlmon 可以监控delphi编写的程序访问sql server的脚本

    SQLMON是一款专为监控Delphi应用程序与SQL Server交互而设计的工具。它允许开发者或DBA(数据库管理员)深入理解程序在运行时如何执行SQL语句,从而优化数据库性能、定位问题或者确保数据操作的正确性。以下是关于...

    sql server 语句优化

    ### SQL Server 语句优化详解 #### 一、引言 在现代企业级应用中,数据库性能直接影响到系统的响应速度和服务质量。对于SQL Server这样的关系型数据库管理系统而言,语句优化是提高查询效率的关键手段之一。本文将...

    SQL server验证身份证号终极语句.txt

    1、可以通过语句对SQL server数据库中现有的身份证号进行验证,并把验证结果更新到某一列; 2、可以识别特殊字符、汉字、空格、位数不对等情况; 3、通过程序集和手动执行的sql,一般半小时内可以分析100万身份证...

    sqlserver如何快速查询死锁语句

    在SQL Server数据库管理系统中,死锁是一个...总的来说,通过监控未提交事务、查找阻塞和死锁的SQL语句,以及适时使用`KILL`命令,我们可以有效地管理和解决SQL Server中的死锁问题,确保数据库系统的稳定和高效运行。

    SQL Server 2005 定时执行SQL语句的方法

    –我的电脑–控制面板–管理工具–服务–右键SQLSERVERAGENT–属性–启动类型–选择”自动启动”–确定. 2、SQL Server Management Studio — SQL Server 代理 — 作业 — 新建作业 作业设置如下: “常规” — 设置...

Global site tag (gtag.js) - Google Analytics