zoukankan      html  css  js  c++  java
  • 控制语句

    DECLARE @NUM1 INT ,@NUM2 INT 
    set @NUM1=-4
    set @NUM2=6
    select @NUM1&@NUM2 as '@NUM1&@NUM2',
    @NUM1|@NUM2 as '@NUM1|@NUM2',
    @NUM1^@NUM2 as '@NUM1^@NUM2'
    GO

    DECLARE @HELLO CHAR(20)
    SET @HELLO='China!'
    select 'I'+ 'LOVE' + @HELLO
    GO


    DECLARE @NUM INT
    SET @NUM=523
    SELECT @NUM AS 取正, -@NUM as 取负, ~@NUM as 取反
    GO

    --- 控制语句 ---

    --BEGIN END 语句块
    /*


    语法:
    BEGIN
    {
    SQL_STATEMENT | STATMENT_BLOCK
    }
    END
    参数说明:
    SQL_STATMENT: 使用语句块定义任何有效的T-SQL语句
    STATEMENT_BLOCK:使用语句块定义任何有效的T-SQL语句块

    */

    BEGIN
    SELECT A.学号,A.姓名, a.班级编号,b.成绩
    FROM 学生信息 A INNER JOIN 成绩表 B ON A.学号=B.学号
    GROUP BY A.班级编号

    END



    --IF ELSE 条件语句
    /*

    语法:
    IF Boolean_expression
    {
    sql_statement | statement_block
    }
    else
    {
    sql_statement | statement_block
    }
    参数说明:
    boolean_expression: 返回TRUE 或FLASE 的表达式。如果布尔表达式中含有SELECT 语句,必须用圆括号将SELECT 语句括起来
    SQL_STATMENT: 使用语句块定义任何有效的T-SQL语句
    STATEMENT_BLOCK:使用语句块定义任何有效的T-SQL语句块

    */

    --SAMPLE
    if((select 学籍 from 学生信息 where 学号='200130000117')='在校')
    begin
    print '该生已经毕业!'
    select 学籍 from 学生信息 where 学号='200130000117'
    end
    else
    print '该生没有毕业!'

    --CASE 分支语句
    /*

    有两种格式
    1)简单格式:将某个表达式与一组简单表达式进行比较以确定结果
    2)搜索格式:计算一组布尔表达式以确定结果
    1、
    case input_expression
    when when_expression then result_expression
    [……n]
    [else else_result_expression]
    end
    参数说明:
    input_expression:指使用简单case 格式时所计算的表达式,可以是任何有效的表达式。
    when_expression:用来和input_expression表达式做比较的表达式,input_expression和每个when_expression的数据类型必须相同,或者是隐性转换
    result_expression:指当input_expression=wher_expression的取值为true时,需要返回的表达式
    else_result_expression:指当input_expression=when_expression的取值为false时,需要返回的表达式。
    2、
    case
    when boolean_expression then result_expression
    [……n]
    [else else_result_expression]
    end
    参数说明:

    */
    use 教务管理系统
    GO

    select 姓名, 籍惯=
    case 籍贯
    when '河南' then '来自河南'
    when '北京' then '来自北京'
    when '湖南' then '来自湖南'
    when '湖北' then '来自湖北'
    else '来自其它省市'
    end
    from 学生信息


    --while循环语句
    /*

    语法格式:
    while boolean_expression
    {
    sql_statement | statement_block
    }
    [break]
    {
    sql_statement | statement_block
    }
    [continue]
    {
    sql_statement | statement_block
    }
    参数说明:
    boolean_expression: 布尔表达式,可以返回true或false。如果布尔表达式中含有select 语句,必须用圆括号将select 语句括起来
    SQL_STATMENT: 使用语句块定义任何有效的T-SQL语句
    STATEMENT_BLOCK:使用语句块定义任何有效的T-SQL语句块
    break: 导致从内层的while 循环中退出,将执行出现在end关键字后面的任何语句块,end关键字为循环结束标记。
    contunue :使while循环重新开始执行,忽略continue关键字后的任何语句

    */

    declare @i int
    declare @j int
    set @i=0
    set @j=0 /* 声明并初始化变量@i,@j */
    while @i<8
    BEGIN
    IF @i<=4
    begin
    while @j<5
    begin
    print space(9-@j)+replicate('*',@j*2+1)
    set @j=@j+1
    end
    set @i=@i+1
    end
    else --输出菱形的下半部分
    begin
    while @j>0
    begin
    set @j=@j-1
    print space(10-@j)+replicate('*',@j*2-1)
    end
    set @i=@i+1
    end
    end


    --waitfor 延迟语句
    waitfor
    {
    DELAY Time | TIME time | (RECEIVE_STATEMENT) [TIMEOUT TIMEOUT]
    }
    DELAY : 可以继续执行批处理、存储过程或事务之前必须经过的指定时段,最长可以小时。
    Time 要等待的时间。可以使用datetime 数据可接受的格式之一指定它,也可以将其指定为局部变量,不能指定日期。因为,不允许指定datetime值的日期部分。
    TIME: 指示sql server 等待到指定时间
    receive_statement : 任何有效的receive语句


    --return 无条件退出语句
    return [INTEGER_EXPRESSION]
    INTER_EXPRESSION : 参数返回一个整数值.


    --goto 跳转语句
    goto label
    label 参数指定要跳转到的语句标号,其名称要符合标识符的规定

    --try catch错误处理语句
    /*
    语句作用:如果try块内部发生错误,则会将控制传递给catch块中包含的另一个语句组。
    try catch 构造捕捉所有严重级别大于10但不终止数据库连接的错误。其使用格式如下:
    begin try
    {sql_statement | statement_block}
    end try
    begin catch
    {sql_statement | statement_block}
    end catch

    */

    --SAMPLE
    begin try
    select distict 年级 from 学生信息
    select 425/0 as '结果'
    end try

    begin catch
    select ERROR_MESSAGE() as '错误信息'
    end catch

    补充一下:由于我是学习语言出身的,语言基本上都会有FOR(;;),但是在SQL中没有这个。至少我现在还不知道有这个。
  • 相关阅读:
    软件概要设计说明书(初稿) 定稿
    重新确定了数据流图以及模块图2020.5.4
    开始编写概要说明书以及详细说明书2020.4.29
    singleflight是如何避免缓存击穿的?
    从IO 到BIO/NIO/AIO 浅析
    JVM
    Http
    Linux命令
    什么时候触发MinorGC?什么时候触发FullGC?
    计算机网络
  • 原文地址:https://www.cnblogs.com/zerocc/p/2208926.html
Copyright © 2011-2022 走看看