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中没有这个。至少我现在还不知道有这个。
  • 相关阅读:
    LeetCode 382. Linked List Random Node
    LeetCode 398. Random Pick Index
    LeetCode 1002. Find Common Characters
    LeetCode 498. Diagonal Traverse
    LeetCode 825. Friends Of Appropriate Ages
    LeetCode 824. Goat Latin
    LeetCode 896. Monotonic Array
    LeetCode 987. Vertical Order Traversal of a Binary Tree
    LeetCode 689. Maximum Sum of 3 Non-Overlapping Subarrays
    LeetCode 636. Exclusive Time of Functions
  • 原文地址:https://www.cnblogs.com/zerocc/p/2208926.html
Copyright © 2011-2022 走看看