zoukankan      html  css  js  c++  java
  • 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 关键字后面的任何语句。

    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语句后的下一条语句。

  • 相关阅读:
    又联考了一场,感觉自己好菜啊,T1没写出来,后来花了一个早上调试。QAQ。最后发现是个-1还有取模没打。。。TAT。。。难受极了!!!
    又联考了一场,感觉自己好菜啊,T2推出了公式但是不会逆元QAQ,难受啊!!!不过都确实是一道逆元的好题撒!
    USACO 2006 November Gold Corn Fields
    SCOI 2005 互不侵犯
    PKU P2411 Mondriaan's Dream
    一道装呀(状压)DP
    继续写高精!noip2012国王游戏。。。
    上两道省选的高精吧!
    找丑数
    本地访问weblogic控制台无反应,关闭linux操作系统防火墙
  • 原文地址:https://www.cnblogs.com/libingql/p/4133409.html
Copyright © 2011-2022 走看看