Sql Server系列:流程控制语句

  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 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)

  执行结果:

count = 0
count = 1
count = 2
count = 3
count = 4
count = 5
count = 6
count = 7
count = 8
count = 9
loop 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 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 关键字后面的任何语句。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。