博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Sql Server系列:流程控制语句
阅读量:6942 次
发布时间:2019-06-27

本文共 2595 字,大约阅读时间需要 8 分钟。

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

1 BEGIN...AND语句

  语句块是多条Transact-SQL语句组成的代码段,从而可以执行一组Transact-SQL语句。BEGIN和END是控制流语言的关键字。BEGIN...END语句块通常包含在其他控制流程中,用来完成不同流程中有差异的代码功能。

  示例:

DECLARE @count INTSELECT @count = 0WHILE @count < 10BEGIN    PRINT 'count = ' + CONVERT(VARCHAR(10), @count)    SELECT @count = @count + 1ENDPRINT 'loop finished, count = ' + CONVERT(VARCHAR(10), @count)

  执行结果:

count = 0count = 1count = 2count = 3count = 4count = 5count = 6count = 7count = 8count = 9loop finished, count = 10

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 INTSET @score = 100IF @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 INTSET @score = 100SELECT CASE @score             WHEN 100 THEN '满分'            WHEN 60 THEN '及格'        END        AS '成绩'
DECLARE @score INTSET @score = 100SELECT 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 关键字后面的任何语句。

5 WAITFOR语句

  语法:

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

5.1 DELAY参数

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

WAITFOR DELAY '01:00'

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

5.2 TIME参数

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

WAITFOR TIME '01:00'

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

转载地址:http://bkinl.baihongyu.com/

你可能感兴趣的文章
asp.net正则表达式
查看>>
使用node-webkit实现打包工具的小结
查看>>
ComboBoxEdit 数据绑定 使用模板
查看>>
Android使用属性动画ValueAnimator动态改变SurfaceView的背景颜色
查看>>
pivot 与 unpivot函数
查看>>
Warning File `.depend' has modification time 1.6 s in the future
查看>>
详解Oracle创建用户权限全过程
查看>>
从两个TIMESTAMP中获取时间差(秒)
查看>>
excel VLOOKUP函数的用法
查看>>
eclipse+webservice开发实例
查看>>
数据流图的画法
查看>>
MySQL 通配符学习小结
查看>>
Java框架----SSH整合回顾
查看>>
我的学习笔记_Windows_HOOK编程 2009-12-03 11:19
查看>>
POJ 1845 (约数和+二分等比数列求和)
查看>>
Android tab_Host页面跳转,传值,刷新等问题汇总
查看>>
[kmp+dp] hdu 4628 Pieces
查看>>
反射简介—类型反射和晚期绑定
查看>>
Lintcode: Binary Tree Serialization (Serialization and Deserialization Of Binary Tree)
查看>>
[设计模式] 9 装饰者模式 Decorator
查看>>