• T-SQL 控制流语句


    Go 关键字可以对批量处理的SQLServer 进行分批次处理

     DECLARE @i int;
      SET @i = 1;
      GO        --分批了
      PRINT @i  --@i在这个批里未定义

      输出:

    消息 137,级别 15,状态 2,第 1 行
    必须声明标量变量 "@i"

    控制流语句不能跨批执行
     DECLARE @i int;
      SET @i = 1;
      IF(@i = 1)
          PRINT('1');
      GO        --分批了
      ELSE
          PRINT('不知道'); --ELSE找不到IF了,控制流语句不跨批,因此报错。

     输出结果如下:

    1
    消息 156,级别 15,状态 1,第 1 行
    关键字 'ELSE' 附近有语法错误。


    控制流语句也成为流程控制语句,和高级语言中的控制语句类似,引入控制语句,让T-SQL中的语句由顺序执行,变为按照控制执行。

    1、程序块执行语句 Begion ....end
    程序块语句 用于多条T-SQL语句封装起来构成一个程序块。SQLServer在处理时,将整个程序块视为一条T-SQL语句执行。

    Begin 
        <T-SQL 程序命令行或程序块>
    End

       经常与 While或if....else组合起来使用,可以互相嵌套。

      2 判断语句IF.....ELSE

         判断语句用于根据条件判断,是否执行某块语句

      

      if 逻辑表达式
            程序块1
      else 逻辑表达式
           程序块2

    3 while循环语句

        while语句用于执行循环,可以根据循环条件重复执行语句块。通常使用break和continue关键字在循环内部进行控制。

            

    while <条件表达式>
    
       〈Sql语句1〉
    
          break
    
        〈Sql语句2〉
    
         continue
    
          〈Sql语句3〉

         break 控制跳出循环,并结束循环体

        continue 让语句跳过〈Sql语句3〉 开始下次判断循环。

    4 分支判断语句CASE

      CASE 语句用于执行多条件的分支判断。

      语法格式:

      CASE input_expression

       WHEN when_expression

        THEN  result_expression

       END

    select Id,
        (case 
                when chinese >= 80 then '优秀' 
                when chinese >= 60 then '及格' 
                else  '不及格' 
        end) as 语文,
        (case 
                when math >= 80 then '优秀' 
                when math >= 60 then '及格' 
                else '不及格' 
        end) as 数学,
            (case 
                when english >= 80 then '优秀' 
                when english >= 60 then '及格' 
                else '不及格' 
        end) as 英语
    from fenshu

       

     5、无条件退出语句RETURN

        RETURN语句用于使程序从一个查询、存储过程或批量处理中无条件返回,其后面的语句不再执行。如果在存储过程中使用return语句,那么此语句可以指定返回给调用应用程序、批处理或过程的整数;如果没有为return指定整数值,那么该存储过程将返回0。

        存储过程返回值:

    返回值 含义
    0 存储过程执行成功
    -1 没有找到数据库对象
    -2 数据类型错误
    -3 进程死锁错误
    -4 进程死锁错误
    -5 语法错误
    -6 其他用户错误
    -7 资源错误
    -8 非致命的内部错误
    -9 达到系统配置参数极限
    -10 内部一致性致命错误
    -11 内部一致性致命错误
    -12 表或索引崩溃
    -13 数据库崩溃
    -14 硬件错误



    6、无条件跳转语句GOTO

        GOTO语句可以使程序无条件跳转到指定的程序执行点,增加了程序设计的灵活性。但破坏了程序的结构化,使程序结构变得复杂而且难以测试。

        语法:

        GOTO 语句标识符

        使用说明:

         语句标识符可以是数字或者字母的组合,但必须以":"结束。而在GOTO语句后的标识符不必带":"。

        注意事项:

         GOTO语句和跳转标签可以在存储过程、批处理或语句块中的任何地方使用,但不能超出批处理的范围。

      

    7、延期执行语句WAITFOR

       延期执行有两种方式,一种是指定时间点,一种是制定时间间隔

     Waitfor{
    
        time ‘时间点’
    
    }
    
    Begin
    
     SQL语句
    
    end
    WaitFor{
      delay ‘时间间隔’
    }
    
    Begin 
      SQL语句
    End
  • 相关阅读:
    0218 scikitlearn库之k*邻算法
    087 Python文件的两种用途
    0217 kd树
    Java8的十大新特性
    Java8的十大新特性
    Spring加载Bean的流程(源码分析)
    Spring加载Bean的流程(源码分析)
    线程池原理(JDK1.8)
    JS原生Ajax和jQuery的Ajax与代码示例ok
    JS原生Ajax和jQuery的Ajax与代码示例ok
  • 原文地址:https://www.cnblogs.com/liwenchaoCode/p/5822261.html
Copyright © 2020-2023  润新知